安卓端TOTP動態密碼生成庫

名稱 SecurityOrder
語言 Android
平臺 GitOSC
作者 流年
鏈接 點此進入
備注 更多精彩開源庫推薦請訪問明燈小站

TOTP(Time-base One-Time Password)譯為基于時間的一次性密碼,也稱時間同步的動態密碼。應用范圍:對安全性要求比較高的場合,可以進行密碼的二次認證,例如:游戲,銀行等業務。
該庫的加密工具類主要參考google-authenticator 加密原理:使用HMAC算法,利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。 這里的密鑰參數:base32生成,消息參數:時間戳(秒單位)/時間間隔(TimeStep) (tips: 例如 TimeStep=30 30內生成密碼一樣,就是誤差30s)
效果圖

TOTP效果圖

TOTP的要求

  1. 客戶端和服務器必須能夠彼此知道或者推算出對方的Unix Time;
  2. 客戶端和服務器端必須共享一個密鑰 ;
  3. 算法必須使用HOTP作為其關鍵實現環節 ;
  4. 客戶端和服務器端必須使用相同的步長X ;
  5. 每一個客戶端必須擁有不同的密鑰 ;
  6. 密鑰的生成必須足夠隨機 ;
  7. 密鑰必須儲存在防篡改的設備上,而且不能在不安全的情況下被訪問或使用;
  8. 對該算法中T的實現必須大于int32,因為它在2038年將超出上限;
  9. T0和X的協商必須在之前的步驟中就已經做好了。

使用方法

  1. 將項目app\src\main\java\com\tk\securityorder\totp中的Base32String.java、PasscodeGenerator.java、TimeUtils.java等三個類添加自己項目;
  2. 調用PasscodeGenerator中的generateTotpNum方法:
String totpNum = TOTPPasscodeGenerator.generateTotpNum();
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容