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

多个收件人的SMIME解密

傅博容
2023-03-14

我应该用Java开发一个基于SMIME应用程序。这些是我需要更多关于SMIME en/de-cryptation的澄清的某些领域。我理解了如何在单个收件人的情况下对消息进行加密和解密。

  • 用于加密消息内容的随机生成的会话密钥。
  • 那么这个随机会话密钥将使用接收方的公钥加密,然后发送SMIME消息。
  • 加密的消息将使用接收方的私钥解密,并检索接收方用于加密消息的会话密钥。

如果存在多个收件人,则

  • 用于加密消息内容的随机生成的会话密钥。
  • 如果消息正发送给多个收件人,则对称密钥由每个收件人的公钥单独加密。封装的消息和所有加密的对称密钥使用PKCS#7格式打包在一起。
  • 然后使用每个接收者的公钥加密此随机会话密钥,然后发送SMIME消息。
    null

有没有人能帮我找到有用的资源或者为我的问题提供答案?

共有1个答案

帅雅逸
2023-03-14

如果消息正被发送给多个收件人,则对称密钥由每个收件人的公钥单独加密。

对称会话密钥也可选地为发送方非对称加密。

所有加密的对称密钥打包在一起

openssl cms -inform smime -in Test_enc.mbox -cmsout -print
CMS_ContentInfo: 
  contentType: pkcs7-envelopedData (1.2.840.113549.1.7.3)
  d.envelopedData: 
    version: <ABSENT>
    originatorInfo: <ABSENT>
    recipientInfos:
      d.ktri: 
        version: <ABSENT>
        d.issuerAndSerialNumber: 
          issuer: C=.., ST=.., L=.., O=.., OU=.., CN=..
          serialNumber: 16756039346226544442
        keyEncryptionAlgorithm:
          algorithm: rsaEncryption (1.2.840.113549.1.1.1)
          parameter: NULL
        encryptedKey:
          0000 - 07 b9 dc b8 97 ed ea b0-8f 9c 30 fa 0c f6 a0   ..........0....
          ...
          01fe - f0 62                                          .b

      d.ktri: 
        version: <ABSENT>
        d.issuerAndSerialNumber: 
          issuer: C=.., ST=.., L=.., O=.., OU=.., CN=..
          serialNumber: 16756039346226544442
        keyEncryptionAlgorithm:
          algorithm: rsaEncryption (1.2.840.113549.1.1.1)
          parameter: NULL
        encryptedKey:
          0000 - 07 b9 dc b8 97 ed ea b0-8f 9c 30 fa 0c f6 a0   ..........0....
          ...
          01fe - f0 62                                          .b
  • 接收端的解密是如何完成的?
  • 接收者是否迭代所有加密的会话密钥并尝试解密会话密钥?
  • 如果有50个收件人,那么收件人是否需要解密所有收件人的加密文本以获得会话密钥?

接收方只需在RecipientInfos列表中搜索适当的颁发者序列号即可找到正确的加密密钥。

 类似资料:
  • 我有一个服务器,这将需要发送消息到几个客户机,让客户机知道一些事情需要做。 当我发送消息时,哪个监听器将处理该消息是随机的。 是否可以用Azure Event Hub向多个收件人发送消息?

  • 问题内容: 我过去一直通过gomail.v2发送电子邮件的唯一方法是对一个循环中的每个电子邮件使用Send()函数。但是我需要显示其他已发送相同电子邮件的电子邮件地址。 我发现了类似的东西: 通过仅将电子邮件发送给字符串中的第一个收件人来工作。并且在电子邮件管理器(例如Gmail,Outlook或任何其他其他收件人地址)中显示但未发送。 我应该怎么做呢? 问题答案: 试试看吗?

  • 我想发送一封电子邮件给多个密件抄送配方使用gmailapp在谷歌应用程序脚本。 var bcc=“abc@example.com”; var bcc2=“xyz@example.com”; 我可以通过使用for循环来解决这个问题 对于(var i=0;i

  • 问题内容: 使用Laravel的回调时,我似乎无法成功发送到 多个 地址,但是,当我仅指定 一个 收件人时,该代码仍然有效。 我试过链接: 并传递一个数组: 但似乎都不起作用,并且在返回Mail :: failures()时收到失败消息,Mail :: failures()的var_dump()显示了我尝试发送到的电子邮件地址,例如: 显然做错了,由于我也不了解API,将不胜感激:http : /

  • 问题内容: 我有一些PHP代码,用于将表单发送到特定的电子邮件地址。但是,我想在PHP发送时再添加几个电子邮件地址。我怎样才能做到这一点? 谢谢。 问题答案: 这将起作用:

  • 我需要将我的表单发送给多个收件人,但我想不出需要编辑哪一行。请看下文。我很感激你的帮助。 我已经尝试添加更多的值到电子邮件,但我不能使它工作。 我需要将我的表单发送给多个收件人,但我想不出需要编辑哪一行。请看下文。我很感激你的帮助。 我已经尝试添加更多的值到电子邮件,但我不能使它工作。 null null