1

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

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

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

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

我应该使用什么 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");

有人可以向我发布在弹性城堡中使用随机密钥加密 MimeMessage 的代码吗?

4

1 回答 1

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

解密时只需提供收件人证书。如果它是加密证书之一,您的消息将被成功解密。

于 2013-10-09T07:26:59.893 回答