首頁  >  問答  >  主體

java - 如何设计带时间限制的激活码?

我做了个软件,想用激活码方式授权,有些只想授权1个星期,光是授权的话,用MD5做加密的,但是怎么让激活码带着授权时间让程序识别呢?
请教大神们

PHP中文网PHP中文网2740 天前1798

全部回覆(13)我來回復

  • PHP中文网

    PHP中文网2017-04-18 10:31:43

    別想著放客戶端,改了電腦時間你這個程式就over了。建議放在服務端認證,啟動的時候使用HTTP方式去服務端驗證是否過期

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:31:43

    很簡單,
    1、首先要用服務端來驗證授權碼的有效性;
    2、MD5規則可以加上時間來生成,例如授權有效期一個月,那你的MD5可以使用MD5(authCode+dateformart( new Date(),"yyyymm")),這樣一個月內你的授權碼產生的Md5都是一樣的,也就是授權碼有效,注意一定是服務端校驗,時間要取服務端的時間;
    3 、MD5規則可以再增加幾層,防止被撞庫破解,可以加上MD5(SHA512(salt+authCode+dateformart(new Date(),"yyyymm"))),這樣基本上沒可能破解了,salt的話可以每一個authCode產生一個隨機變量,保存在服務端。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:31:43

    這個方法有多種,但都不能保證不被破解。

    簡單的來說,可以把時間資訊加到驗證碼中。
    比如說你需要的有效期限是7天,那麼你可以以你產生驗證碼那天的日期來作為產生驗證碼的一個因子。
    在你的程式做驗證的時候,取得目前的日期,並往前再推六天,共7天,以同樣的方式產生7個驗證碼來檢驗。如果有一個是正確的,那表示還沒有過期。

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:31:43

    你MD5不也是用一個數字算得麼?把時間資訊加進去不就行了?

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 10:31:43

    不想被破解,只能放到服務端,我可以提供你免費的後端服務,哈哈

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-18 10:31:43

    最簡單的方法是,將你md5加密後的啟動碼+日期存到資料庫裡,驗證的時候判斷下時間就可以了,當然啟動碼不能重複,可以設定主鍵或唯一索引

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 10:31:43

    md5加密的話,加密字串裡不能放日期,日期用別的加密串或明文,不想被破解就用服務端認證

    回覆
    0
  • 黄舟

    黄舟2017-04-18 10:31:43

    可以這樣設計資料結構:{'a':'驗證碼','b':'過期時間(距離1970年的時間長度)'},然後將該段字串加密即可。

    回覆
    0
  • 黄舟

    黄舟2017-04-18 10:31:43

    在伺服器端做比較方便吧,伺服器端三個欄位可以,過期時間,是否已使用,客戶只知道key就可以了

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-18 10:31:43

    放在redis裡面,設定過期時間。 。 。

    回覆
    0
  • 取消回覆