我正在 iOS 中生成一个 RSA 私钥,并希望在应用程序的连续运行之间访问它。在持久内存中保存 SecKeyRef 类型似乎是不可能的,所以我想知道是否有任何其他方法可以在 NSUserDefaults 中保存和加载 secKeyRef 私钥。我还尝试将 privateKey 存储在钥匙串中,然后将其作为 SecKeyRef 取回,但没有成功。
关于如何将私钥存储在 iOS 中的持久内存位置的任何建议?
我正在 iOS 中生成一个 RSA 私钥,并希望在应用程序的连续运行之间访问它。在持久内存中保存 SecKeyRef 类型似乎是不可能的,所以我想知道是否有任何其他方法可以在 NSUserDefaults 中保存和加载 secKeyRef 私钥。我还尝试将 privateKey 存储在钥匙串中,然后将其作为 SecKeyRef 取回,但没有成功。
关于如何将私钥存储在 iOS 中的持久内存位置的任何建议?
将任何内容存储在持久内存位置是不可能的,NSDefaults
也不安全。
Apple 的 KeyChain 正是为此目的而设计的。查看官方Apple 文档。
SSKeyChain为 KeyChain API 提供了一个出色且易于使用的包装器。
不安全的解决方案
您可以像这样使用 NSUserDefaults :
[[NSUserDefaults standardUserDefaults] setObject: privateKey forkey:@"myKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
并使用以下命令检索它:
[[NSUserDefaults standardUserDefaults] objectForKey:@"myKey"];
顺便一提
要存储 int 值,请使用 setInteger: 而不是 setObject