我使用以下方法加密(实际上是散列)用户将在 iOS 应用程序中输入的密码(4-6 位数字)。基本上,流程与本教程http://www.raywenderlich.com/6475中描述的完全相同。
- 使用字符串哈希方法[pincode hash]
- 通过使用用户的其他信息(例如电子邮件,Salt 哈希字符串 - 代码中的纯文本)的组合生成计算的哈希字符串,因此计算的字符串 = [@"%@%i%@", email, [pincode hash],盐串]
- 使用 SHA256 Digest 为计算的哈希字符串生成哈希字符串。
- 将 sha256 摘要结果放入钥匙串
由于 sha256 摘要结果将用于 sqlciper lib(加密 sqlite 数据库)和 Rncryptor(https://github.com/rnapier/RNCryptor)的密码,因此 sha256 摘要结果是关键部分。
我认为这种方法是可以的。但是有人一直认为将 sha256 摘要结果保存到钥匙串中是不安全的,因为人们可以将其转储为越狱设备(我同意,正如我所读到的,并且在今年的 WWDC 期间咨询了苹果安全工程师之后)。
我们还有其他更好的选择吗?我知道一堆应用程序也使用钥匙串服务来保存用户的用户名和密码。