我想为那些忘记了我正在编写的 iPhone 应用程序的密码(基本上是 4 位 PIN 码)的用户实现某种密码重置功能,但我不想让任何用户只需禁用它。我正在考虑进行某种验证,并想知道这种事情的最佳实践是什么。
我正在计划这样的事情:
- 用户联系我说他们忘记了密码
- 我通过电子邮件向他们发送代码或代码序列以输入密码屏幕
- 应用程序根据一些 secret 算法生成一个数字,用户将其发送给我
- 我向他们发送了另一个代码(由匹配算法生成),他们输入该代码以删除密码
我认为这将使我能够只允许用户重置密码,前提是他们已经与我联系并且我已经验证了他们是谁。这也应该可以防止用户使用此代码解锁另一部装有相同应用程序的手机。
这看起来是个好主意吗?是否有任何合适的哈希算法/库来生成这种两步验证代码(最好是 Objective C)?有没有更好的方法来处理这种事情?
如有任何帮助或建议,我们将不胜感激。
最佳答案
您应该能够结合使用散列和 RSA 来解决这个问题。
假设您有一个私钥 (K1),公钥 (K2) 随应用程序分发。
第二步:发送一个随机码C,并用私钥K1对C进行加密。应用程序解密加密并检查它是否与用户输入的代码 C 相匹配
第 3 步:应用程序创建一个随机的 4 位代码(新密码 P),使用公钥加密并发送给您(或者可能将其提供给发送给您的用户)
第四步:您用您的私钥解密新密码并将其发送给用户
关于objective-c - 重置密码算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9469394/