当前位置: 首页 > 知识库问答 >
问题:

如何利用bouncy castle实现电子邮件的随机密钥加密

卫飞鹏
2023-03-14

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

/* Create the encrypter */
SMIMEEnvelopedGenerator encrypter = new SMIMEEnvelopedGenerator();
encrypter.addKeyTransRecipient((X509Certificate) certChain[0]);

/* Encrypt the MimeMessage*/
MimeBodyPart encryptedPart = encrypter.generate(signedMessage,
SMIMEEnvelopedGenerator.RC2_CBC, "BC");

共有1个答案

顾承平
2023-03-14

搞定了。解决方案非常简单,只需将所有收件人证书添加到bouncy castle 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");

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

 类似资料:
  • 我需要在C#中加密数据,以便将其传递给Java。Java代码属于第三方,但我得到了相关的源代码,因此我决定,由于Java使用Bouncy Castle库,所以我将使用C#端口。 解密工作正常。但是,解密仅在使用私钥使用encrypt时有效,而不是使用公钥。使用公钥时,解密失败,出现。 编辑: 我还添加了一个单元测试,它证明公钥等于从私钥中提取的公钥:

  • 每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使是。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)? 请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用Email

  • 问题内容: 我正在寻找有关如何配置jenkins电子邮件插件(ext-mail)以加密通知的说明?Google叔叔对我没有太多帮助。 问题答案: 此类功能不是开箱即用的,您需要根据需要自定义ExtendedEmailPublisher。 您可以获取用于签名/加密的收件人和电子邮件,并最终致电Transport.send(msg)。

  • 我正在关注论坛主题:Azure 信息保护|如何解密 .来自 EWS API 的 EML? 我有兴趣知道解密一封加密的office 365邮件的步骤。您能否对以下内容发表评论: > < li> 正如您提到的,必须将电子邮件转换为。msg文件,所以我的问题是,在将电子邮件(我认为是Mime流)写入msg文件后,该文件会保持加密吗? 当我们使用 EWS API 阅读电子邮件时,.rpmsg 文件在解密中

  • 我有一个使用BouncyCastle作为安全提供者的应用程序,但是我想切换到另一个直接使用OpenSSL(consecrypt)的应用程序。我遇到的问题是,我正在使用BouncyCastle提供的密钥生成器中的ECDH“密钥”,但在我的其他库中没有类似的密钥生成器。 为了比较这两者,我将使用两种方法解码这些点,输入如下- 为提高可读性而添加换行符 使用BouncyCastle方法- 返回的是。返回

  • 刚开始使用PGP,我正在尝试通过C#控制台应用程序加密一个文件。在我的研究中,似乎BouncyCastle是一个更受欢迎的应用。我找到了下面的文章,它看起来很好,除了我只有公钥。http://burnignorance.com/c-coding-tips/pgp-encryption-decryption-in-c/