Bouncycastle:使用 public 密钥加密

Bouncycastle: encrypt with a public key

我需要一些关于这个库的帮助。获取以下示例代码 BouncyCastle,我不明白它是如何工作的。 我的代码:http://pastebin.com/RieDfUd9 字典:链[0],是发件人证书。 conv,是接收者证书。

我的问题是这样的,我需要使用 smime 与我发送电子邮件的 public 关键人员加密电子邮件。目前在我的测试环境中,我可以访问这两个证书。但是在生产环境中,我将只能访问我的证书(发送者)链 [0],以及接收者的 public 密钥。我需要加密电子邮件,以便我可以使用 public 密钥打开谁正在阅读(并且用于加密邮件)。

我已经尝试了几种方法,但我总是在解密时遇到问题。

你不能那样做。您将必须存储证书而不仅仅是 public 密钥。

当邮件客户端收到一封电子邮件时,它必须知道使用哪个私钥来解密它 - 否则它将无法解密。

邮件客户端如何知道使用哪个私钥?因为收件人信息也在加密邮件中。

您不能仅使用任何随机 public 密钥加密您的数据加密密钥,并希望接收方知道可以使用哪个密钥来解密它。

这就是 BouncyCastle API 使用证书而不是密钥的原因。

您可以在此处阅读更多有关 SMIME 加密的详细信息: https://security.stackexchange.com/questions/45222/smime-email-decryption-key-with-openssl

此 link 详细介绍了如何为多个收件人完成解密过程: SMIME decryption for multiple recipients