我正在使用bouncy-castle来实现SMIME(公钥加密)。要将加密电子邮件发送给多个收件人,我选择了此方法
使用随机密钥加密电子邮件
使用每个收件人公钥加密随机密钥,并将其设置为MIME邮件。 如果电子邮件中有三个收件人,则该对象将具有三个加密的随机密钥。
收件人将识别合适的加密随机密钥,使用其私钥对其进行解密,并在随机密钥的帮助下解密内容。
我应该使用什么bouncy-castle类来加密带有随机字符串的消息。我知道下面的代码可以用来加密使用收件人证书的邮件。
/* Create the encrypter */
SMIMEEnvelopedGenerator encrypter = new SMIMEEnvelopedGenerator();
encrypter.addKeyTransRecipient((X509Certificate) certChain[0]);
/* Encrypt the MimeMessage*/
MimeBodyPart encryptedPart = encrypter.generate(signedMessage,
SMIMEEnvelopedGenerator.RC2_CBC, "BC");
有人可以在bouncy-castle中使用随机密钥向我发送加密MimeMessage的代码吗?
答案 0 :(得分:1)
完成了。解决方案非常简单。只需将所有收件人证书添加到充气城堡EnvelopedGenerator并加密。
/* Create the encrypter */
SMIMEEnvelopedGenerator encrypter = new SMIMEEnvelopedGenerator();
encrypter.addKeyTransRecipient((X509Certificate) recipient1Cert);
encrypter.addKeyTransRecipient((X509Certificate) recipient2Cert);
/* Encrypt the MimeMessage*/
MimeBodyPart encryptedPart = encrypter.generate(signedMessage,
SMIMEEnvelopedGenerator.RC2_CBC, "BC");
虽然解密只是提供收件人证书。如果它是加密证书之一,您的邮件将被成功解密。