如何使用带密码的公钥加密文本?

时间:2015-08-03 09:33:39

标签: ios encryption rsa public-key-encryption

现在我可以使用此tutorial中的方法加密文本。 (对不起,它只有中文,但我认为你可以通过它的代码片段理解帖子)。

使用没有密码的公钥加密。如何使用公共密钥WITH passphrase?

加密我的文本

更新1:

我可以使用以下代码读取没有passpharse的公钥:

certificate = SecCertificateCreateWithData(kCFAllocatorDefault, ( __bridge CFDataRef)publicKeyFileContent);
if (certificate == nil) {
    NSLog(@"Can not read certificate from pub.der");
    return nil;
}

问题是 - 如何在iOS中读取带有passpharse的公钥?

更新2

服务器和iOS应用之间的通信使用https

除了https,后端和应用程序都有自己的公钥和私钥进行安全通信。

他们沟通的步骤:

  1. App拥有来自服务器的公钥(带密码)

  2. App生成公钥(带密码)和私钥(首次使用app时)

  3. 当app向服务器发送数据(带有3个参数的JSON)时,app会发送app生成的公共证书(JSON参数1)+ app生成的公钥密码(JSON参数2)+公共加密的消息来自服务器的密钥(JSON参数3)

  4. 服务器可以读取收到的消息(由服务器端私钥解密)

  5. 服务器将在收到JSON后发送响应消息。邮件由app

  6. 生成的公钥加密

    因此,从服务器到每个应用程序都建立了安全连接。并确保正确的个人应用程序不会收到不适合他们的消息。

1 个答案:

答案 0 :(得分:0)

RSA加密是一种非对称加密算法。使用公钥加密时,只能使用关联的私钥解密。没有密码。

通常,数据加密使用AES等对称密钥加密与从PBKDF2使用密码/短语派生的密钥一起使用。

通常,在使用非对称加密时,文本将使用对称算法(例如使用随机一次性密钥的AES)进行加密。密钥将使用非对称算法加密,并且对称加密文本和非对称加密密钥都被发送到另一端。接收方使用私钥反转进程。

请注意,非对称加密速度很慢,要加密的数据仅限于密钥大小。这就是它通常仅用于加密密钥或非常有限的数据的原因。