【发布时间】:2014-05-11 19:14:00
【问题描述】:
我在应用的文档目录中保存了一个重要文件。我不允许其他人查看其内容,因此我使用自动生成的 AES 密钥加密文件并使用 RSA 公钥加密此 AES 密钥,然后将加密的 AES 密钥保存到 NSUserDefaults。
在使用重要文件时,我会取出加密的AES密钥,用RSA公钥解密AES密钥,然后解密文件。
但是我不知道RSA私钥存储在哪里,像NSString *rsaPrivateKey = @"%^^&*(())";这样写在我的代码中是否安全,如果没有,是否有更安全的解决方案?
我知道如何使用 openssl (This link helps me) 生成 RSA 公钥和私钥
编辑:
重要文件只对用户本人开放,可以认为是包含一些敏感内容的照片,照片由用户自己保存。
【问题讨论】:
-
这是一个敏感话题。您无法将其存储在本地,这将是完全防黑客的。最好的办法是从服务器获取它并将其存储在 iOS 钥匙串中。从程序中获取字符串文字并不难。
-
@borrrden 谢谢你的回答。我知道最好从服务器获取,但实际上我没有服务器...
-
如果您没有服务器,那么我建议您改用
#define,并将其设为 C 字符串。事实上,将其组合成多个并将它们组合成一个NSString,或者更好的是,您可以将密钥基于您在运行时生成的 UUID。 -
@borrrden "在运行时生成" 仍然面临保存私钥的问题,但在运行时生成比在我的代码中编写要好。顺便说一句,如何在运行时生成私钥-公钥对:)?
-
@borrrden 对于 RSA 密钥来说这很棘手。但是,您可以从 UUID 和其他一些数据创建一个 AES 密钥,并用它加密 RSA 密钥。一般来说,您不希望一直创建非对称密钥。
标签: ios encryption cryptography rsa