【问题标题】:How can I encrypt text using a public key WITH passphrase?如何使用带有密码的公钥加密文本?
【发布时间】: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 之外,后端和应用程序都有用于安全通信的公钥和私钥。

他们的沟通步骤:

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

  2. 应用生成一个公钥(带密码)和一个私钥(当应用第一次使用时)

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

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

  5. 服务器将在收到 JSON 后发送响应消息。消息由应用生成的公钥加密

这样就建立了从服务器到每个应用程序的安全连接。并确保正确的单个应用程序不会收到不适合他们的消息。

【问题讨论】:

  • 您想要完成什么,因为 RSA(等距密钥加密)没有密码短语,只有不是从密码短语派生的公钥和私钥。
  • @zaph 感谢您的回答和回复。我想要做的是让 iOS 应用程序可以读取带有密码的公钥,这样我就可以使用公钥进行加密。 (我已经编辑了问题以使其清楚)
  • 1.为什么要对公钥保密?只有拥有私钥的人才能解密用公钥加密的数据。私钥必须保密。 2. 如果你想加密使用 AES 对称加密,密钥来自 PBKDF2 密码短语,这两者都可以在 Common Crypto 中使用。 3. 你想完成什么?
  • 我理解你的问题...但是我不想改变后端的结构...所以我想遵循它。我很难向你详细解释后端结构。使用带有密码短语的公钥提供了更多的安全性,但实际上并不是很安全......你能提供我使用带有密码短语的公钥的代码吗?
  • “你能给我提供使用带有密码的公钥的代码吗?”:不,没有这样的标准。他们可能想出了一些混搭,您必须找出完整的细节。后端开发人员很可能不了解密码安全性。顺便说一句:我向CISSP 加密领域专家提到了使用密码加密公钥的概念,得到的回应是:“这太疯狂了”。

标签: ios encryption rsa public-key-encryption


【解决方案1】:

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

在一般数据加密使用中,对称密钥加密(如 AES)与从 PBKDF2 的密码/短语派生的密钥一起使用。

一般而言,在使用非对称加密时,文本将使用对称算法(例如 AES)使用随机一次性密钥进行加密。密钥将使用非对称算法加密,对称加密文本和非对称加密密钥都发送到另一端。接收方使用私钥反转该过程。

请注意,非对称加密既慢又慢,要加密的数据仅限于密钥大小。这就是为什么它通常只用于加密密钥或非常有限的数据。

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2010-12-09
    • 2014-08-07
    相关资源
    最近更新 更多