java - 如何設計帶時間限制的激活碼?
問題描述
我做了個軟件,想用激活碼方式授權,有些只想授權1個星期,光是授權的話,用MD5做加密的,但是怎么讓激活碼帶著授權時間讓程序識別呢?請教大神們
問題解答
回答1:別想著放客戶端,改了電腦時間你這個程序就over了。建議放在服務端認證,啟動的時候使用HTTP方式去服務端驗證是否過期
回答2:很簡單,1、首先要用服務端來驗證授權碼的有效性;2、MD5規則可以加上時間來生成,例如授權有效期一個月,那你的MD5可以使用MD5(authCode+dateformart(new Date(),'yyyymm')),這樣一個月內你的授權碼生成的Md5都是一樣的,也就是授權碼有效,注意一定是服務端校驗,時間要取服務端的時間;3、MD5規則可以再增加幾層,防止被撞庫破解,可以加上MD5(SHA512(salt+authCode+dateformart(new Date(),'yyyymm'))),這樣基本沒可能破解了,salt的話可以每一個authCode生成一個隨機變量,保存在服務端。
回答3:這個方法有多種,但都不能保證不被破解。
簡單的來說,可以把時間信息添加到驗證碼中。比如說你需要的有效期是7天,那么你可以以你生成驗證碼那天的日期來作為生成驗證碼的一個因子。在你的程序做驗證的時候,獲取當前的日期,并往前再推六天,共7天,以同樣的方式生成7個驗證碼來檢驗。如果有一個是正確的,那說明還沒有過期。
回答4:你MD5不也是用一個數算得么?把時間信息加進去不就行了?
回答5:不想被破解,只能放到服務端,我可以給你提供免費的后端服務,哈哈
回答6:最簡單的方法是,將你md5加密后的激活碼+日期存到數據庫里,驗證的時候判斷下時間就可以了,當然激活碼不能重復,可以設置主鍵或唯一索引
回答7:md5加密的話,加密串里不能放日期,日期用別的加密串或者明文,不想被破解就用服務端認證
回答8:可以這樣設計數據結構:{’a’:’驗證碼’,’b’:’過期時間(距離1970年的時間長度)’},然后將該段字符串加密即可。
回答9:在服務器端做比較方便吧,服務器端三個字段可以,過期時間,是否已使用,客戶只知道key就可以了
回答10:放在redis里面,設置過期時間。。。
相關文章:
1. javascript - 手機點擊input時,button會被頂上去?求解決!!!2. 百度地圖api - Android 百度地圖 集成了定位,導航 相互的jar包有沖突?3. python - django 按日歸檔統計訂單求解4. 網頁爬蟲 - python爬蟲用BeautifulSoup爬取<s>元素并寫入字典,但某些div下沒有這一元素,導致自動寫入下一條,如何解決?5. javascript - vue-mint UI - icon在哪里有文檔?6. HTML5禁止img預覽該怎么解決?7. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。8. html5 - 表單無法屏蔽自動填充 autocomplete=off9. html - 請教一個前端css問題。10. 請教一個python字符串處理的問題?
