3

我正在制作一个应用程序,要求用户在使用该应用程序之前输入密码。我的问题是:存储此类数据的确切位置(以便可以检查其是否正确)、NSUserDefaults?、捆绑文件?、应用程序文档文件夹?

4

3 回答 3

5

您绝对应该将敏感数据存储在钥匙串中。NSUserDefaults 将其数据存储在纯文本文件中,任何人都可以通过访问文件系统来读取该文件。

有一些开源类可以简化 Keychain API 的使用,你一定要看看它们:

SFHFKeychain 访问:

SFHF钥匙扣

于 2012-06-07T02:07:46.260 回答
2

您应该使用钥匙串服务,它将数据保存在设备的加密钥匙串中。

API 可能很难使用,但请查看SFHFKeychainUtils,它是一个易于使用的 Objective-C 包装器。

于 2012-06-07T02:08:08.473 回答
1

我可能会选择 NSUserDefaults,但这取决于您的用例。你用这个干什么?是否必须定期访问/更新?您是否考虑过存储 PIN 码的哈希值而不仅仅是 PIN 码?数据有多大?

如果它是一个非常简单的 4 位密码,每次应用启动时您只能访问一次,那么 NSUserDefaults 可能是最好的选择。实施起来也非常快。只需确保您知道自己在做什么,并在需要时对其进行加密。

于 2012-06-07T01:24:23.620 回答