将 NSUserDefaults 转换为钥匙串?

发布于 2024-09-02 16:54:45 字数 187 浏览 6 评论 0原文

所以,NSUserDefaults 非常容易使用。但显然,它不太安全——没有加密。当然,客户希望应用程序首选项是安全的,因为它包含敏感数据。

但钥匙串是安全的,尽管很难编码(显然)。那么有没有一种方法可以轻松地将 NSUserDefaults 代码转换为 Keychain 代码呢?换句话说,我想将应用程序首选项存储在钥匙串中。还是我找错了树?

So, NSUserDefaults is quite easy to use. But apparently, it is not too secure - there is no encryption. And of course the client wants the app prefs to be secure because it contains sensitive data.

But the Keychain is secure, though hard to code (apparently). So is there a way to easily convert NSUserDefaults code to Keychain code? In other words, I want to store app prefs within the Keychain. Or am I barking up the wrong tree?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

画离情绘悲伤 2024-09-09 16:54:46

以下两个解决方案都是 KeyChain API 的包装器。通过在 NSUserDefaults 类别中使用它们,您可以使用干净的方式来访问和存储密码。

对于 Mac OS X

您可以尝试 EMKeyChain 库,它以友好的方式包装钥匙串。如果需要存储密码,就像 NSUserDefaults 一样简单。

对于 iPhone

有一个简单的包装器: 简单的 iPhone 钥匙串代码

Both of the below solutions are wrappers around KeyChain API. By using them in a NSUserDefaults category, you can have clean way to access and store passwords.

For Mac OS X

You can try the EMKeyChain library that wraps the keychain in a friendly manner. If you need to store passwords, it is as simple as NSUserDefaults.

For iPhone

There is a simple wrapper: Simple iPhone Keychain Code.

初见终念 2024-09-09 16:54:46

对于 iOS(可能还有 OS X),您可以使用我的 GSKeychain 库。使用示例:

// Store a secret
[[GSKeychain systemKeychain] setSecret:@"t0ps3kr1t" forKey:@"myAccessToken"];

// Fetch a secret
NSString * secret = [[GSKeychain systemKeychain] secretForKey:@"myAccessToken"];

// Delete a secret
NSString * secret = [[GSKeychain systemKeychain] removeSecretForKey:@"myAccessToken"];

希望这有帮助!

For iOS (and possibly OS X) you can use my GSKeychain library. Sample usage:

// Store a secret
[[GSKeychain systemKeychain] setSecret:@"t0ps3kr1t" forKey:@"myAccessToken"];

// Fetch a secret
NSString * secret = [[GSKeychain systemKeychain] secretForKey:@"myAccessToken"];

// Delete a secret
NSString * secret = [[GSKeychain systemKeychain] removeSecretForKey:@"myAccessToken"];

Hope this helps!

在梵高的星空下 2024-09-09 16:54:46

使用 PDKeychainBindings 库可以非常简单地做到这一点。
此处 是我最近写的一篇文章。
示例代码

而不是这个

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[Model sharedModel] currentUser] setAuthToken:[defaults objectForKey:@"authToken"]];

使用这个

PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[[[Model sharedModel] currentUser] setAuthToken:[bindings objectForKey:@"authToken"]];

It's extremely simple to do that using the PDKeychainBindings library.
Here is an article i wrote about it recently.
Sample code

Instead of this

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[Model sharedModel] currentUser] setAuthToken:[defaults objectForKey:@"authToken"]];

Use this

PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[[[Model sharedModel] currentUser] setAuthToken:[bindings objectForKey:@"authToken"]];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文