2012-02-27 126 views
3

我想爲那些忘記密碼的用戶(基本上是4位密碼)爲我正在寫的iPhone應用程序實現某種密碼重置功能,但我不想讓它任何用戶都可以簡單地禁用它。我正在考慮進行某種驗證,並想知道這種事情的最佳做法是什麼。重置密碼算法

我計劃是這樣的:

  1. 用戶聯繫我說,他們已經忘記了自己的密碼,
  2. 我通過電子郵件發送一個或多個代碼的順序進入密碼屏幕
  3. 該應用程序基於一些祕密算法生成一個數字,用戶發送給我
  4. 我發送給他們另一個代碼(由匹配算法生成),他們輸入以刪除密碼

我在想這會讓我只允許用戶重置密碼,只有當他們與我聯繫,我已經驗證了他們是誰。這也應該防止用戶使用該代碼來解鎖具有相同應用的另一個電話。

這似乎是個好主意嗎?是否有任何合適的哈希算法/庫來生成這種兩步驗證代碼(最好是Objective C)?有沒有更好的方法來處理這種事情?

任何幫助或建議將不勝感激。

+0

4位數的PIN僅僅是10.000可能的值。您在哪裏以及如何存儲該代碼? – 2012-02-27 18:00:26

+0

我打算在應用程序沙箱中存儲。我應該說,密碼就是爲了阻止那些偶然的用戶查看私人數據,比如說他們是否把電話借給某人撥打電話或玩遊戲。在確定的用戶無法通過手機或備份進行拖網的情況下,它不一定非常安全。 – 2012-02-27 18:26:00

回答

1

你應該能夠使用哈希和RSA的組合來解決這個問題。

假設您的私鑰爲(K1),公鑰(K2)隨應用分發。

步驟2:發送一個隨機碼C和用私鑰K1加密C。該應用程序解密加密,並檢查它是否匹配用戶輸入的代碼C

第3步:該應用程序創建一個隨機的4位數字代碼(新密碼P),用公鑰加密併發送給您(或可能它給誰發送給您的用戶)

第4步:您與您的私鑰解密新密碼,並將其發送給用戶