2016-11-04 141 views
0

我需要一些帮助。获取以下示例代码BouncyCastle,我不明白这是如何工作的。 我的代码:http://pastebin.com/RieDfUd9 词典:chain [0],是发件人证书。 conv,是接收者证书。Bouncycastle:用公钥加密

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

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

回答

0

你不能那样做。您将不得不存储证书而不是公钥。

当邮件客户端收到一封电子邮件时,必须知道使用哪个私钥解密它 - 否则它只会解密失败。

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

你不能用任何随机公钥加密你的数据加密密钥,并希望接收者知道哪个密钥可以用来解密它。

这就是为什么BouncyCastle API需要证书而不是密钥。

你可以更了解的SMIME加密这里的细节: https://security.stackexchange.com/questions/45222/smime-email-decryption-key-with-openssl

此链接有更多的解密过程是如何给多个收件人的完成: SMIME decryption for multiple recipients

+0

谢谢!我会改变我的方法! –

+0

TY再次回答。 我完全可以用弹性城堡来做我想要的东西。一旦我完成我的工作,我将在GitHub上发布我的代码。 –