【发布时间】:2015-10-25 08:42:38
【问题描述】:
现在我可以使用tutorial 中的方法加密文本。 (对不起,它只有中文,但我认为您可以通过其代码 sn-ps 理解该帖子)。
它使用没有密码的公钥进行加密。如何使用带密码的公钥加密我的文本?
更新 1:
我可以使用以下代码读取没有密码的公钥:
certificate = SecCertificateCreateWithData(kCFAllocatorDefault, ( __bridge CFDataRef)publicKeyFileContent);
if (certificate == nil) {
NSLog(@"Can not read certificate from pub.der");
return nil;
}
问题是 - 如何在 iOS 中读取带有密码的公钥?
更新 2
服务器和iOS应用程序之间的通信是使用https
除了 https 之外,后端和应用程序都有用于安全通信的公钥和私钥。
他们的沟通步骤:
应用拥有来自服务器的公钥(带有密码)
应用生成一个公钥(带密码)和一个私钥(当应用第一次使用时)
当app向服务器发送数据(一个带有3个参数的JSON)时,app会发送一个app生成的公共证书(JSON参数1)+app生成的公钥密码(JSON参数2)+公钥加密的消息来自服务器的密钥(JSON 参数 3)
服务器可以读取收到的消息(由服务器端私钥解密)
服务器将在收到 JSON 后发送响应消息。消息由应用生成的公钥加密
这样就建立了从服务器到每个应用程序的安全连接。并确保正确的单个应用程序不会收到不适合他们的消息。
【问题讨论】:
-
您想要完成什么,因为 RSA(等距密钥加密)没有密码短语,只有不是从密码短语派生的公钥和私钥。
-
@zaph 感谢您的回答和回复。我想要做的是让 iOS 应用程序可以读取带有密码的公钥,这样我就可以使用公钥进行加密。 (我已经编辑了问题以使其清楚)
-
1.为什么要对公钥保密?只有拥有私钥的人才能解密用公钥加密的数据。私钥必须保密。 2. 如果你想加密使用 AES 对称加密,密钥来自 PBKDF2 密码短语,这两者都可以在 Common Crypto 中使用。 3. 你想完成什么?
-
我理解你的问题...但是我不想改变后端的结构...所以我想遵循它。我很难向你详细解释后端结构。使用带有密码短语的公钥提供了更多的安全性,但实际上并不是很安全......你能提供我使用带有密码短语的公钥的代码吗?
-
“你能给我提供使用带有密码的公钥的代码吗?”:不,没有这样的标准。他们可能想出了一些混搭,您必须找出完整的细节。后端开发人员很可能不了解密码安全性。顺便说一句:我向CISSP 加密领域专家提到了使用密码加密公钥的概念,得到的回应是:“这太疯狂了”。
标签: ios encryption rsa public-key-encryption