如何使用带弹跳城堡的随机密钥加密电子邮件

时间:2013-09-24 12:45:10

标签: java encryption javamail bouncycastle smime

我正在使用bouncy-castle来实现SMIME(公钥加密)。要将加密电子邮件发送给多个收件人,我选择了此方法

  1. 使用随机密钥加密电子邮件

  2. 使用每个收件人公钥加密随机密钥,并将其设置为MIME邮件。    如果电子邮件中有三个收件人,则该对象将具有三个加密的随机密钥。

  3. 收件人将识别合适的加密随机密钥,使用其私钥对其进行解密,并在随机密钥的帮助下解密内容。

  4. 我应该使用什么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的代码吗?

1 个答案:

答案 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");

虽然解密只是提供收件人证书。如果它是加密证书之一,您的邮件将被成功解密。