上節我們說到,關於opt演算法的說明,也說到這個專案是使用totp(基於時間)方法。
這節講的主要把它怎麼整合專案中。整合專案中,此演算法需要注意這麼幾點。
1. 與伺服器端統一的準確時間
由於是使用totp演算法,客戶端與伺服器端的演算法是必須要儲存一致的。
對時介面
,獲取伺服器端準確時間,返回,以秒為單位的時間戳。時間偏移量 = 本地時間 – 伺服器端時間, 將時間偏移量儲存在地sharepreference中,供計算動態密碼時讀取伺服器端時間 = 本地時間 - 時間偏移量使用時間偏移量的好處是:只需要從伺服器獲取一次時間,以後都可以離線使用微盾。
2. 靜態金鑰。
加密後靜態金鑰儲存在本地,加密演算法為des,一種對稱加密演算法,支援加密解密金鑰 = 固定字串 + 裝置imei號碼
這個解密的金鑰有什麼作用了,是用於微盾兩邊安全性的提公升了。這就引出乙個話題,金鑰的作用。公鑰加密,儲存在客戶端 很多個,使用者知道。私鑰解密,儲存在伺服器 只有乙個,只有伺服器知道。這種不對稱加密的方式,大大的提公升了破解難度。至於大家認為,裝置的imei號是不是多此一舉,在以後我會專門用一篇文章論述,這裡,就不做過多的贅述了。
有了這兩點的分析,我們有了乙個完美的設計方案:
有了準確的伺服器時間和靜態金鑰,就能計算出正確的6位動態密碼
當使用者輸入動態密碼登入時,伺服器會使用同樣的時間和金鑰算出6位密碼進行比對。
伺服器做了容錯處理,會計算出在某個時刻前1分鐘和後一分鐘的所有6位密碼,只要使用者輸入正確了其中乙個,就算通過.
至於這個方法具體**,我準備是在google乙個開源專案google authenticator 修改。
下面的課程,我們將進入具體的源**的說明。
用了3節的篇幅,說明了微盾概要設計和技術實現,不知道大家明白沒,請給予反饋。
仿新浪微盾客戶端專案簡介四
上節我們說到我們主要的演算法是在google的乙個開源專案google authenticator 修改的。那麼我們窺探一下google authenticator的全貌。我們通過源 來了解,上 首先是一些噼里啪啦的定義的常量,變數。private static final int pass cod...
仿新浪微盾客戶端專案簡介四
上節我們說到我們主要的演算法是在google的乙個開源專案google authenticator 修改的。那麼我們窺探一下google authenticator的全貌。我們通過源 來了解,上 首先是一些噼里啪啦的定義的常量,變數。private static final int pass cod...
仿新浪微盾客戶端專案簡介五
這節中,我們我們來討論微盾上介面上實現的二三事。這也是這個專案的重頭戲。介面上我們要做乙個什麼效果,乙個倒計時的效果了,這個倒計時效果以後用的很多,希望對大家有幫助。我這裡布局方式用到了幀布局的方式,乙個是所謂的表盤的情況,乙個是倒計時的秒針,相應的布局檔案如下了 那個rin iew是我自定義的表盤...