Bouncy Castle API如何知道使用哪个密钥加密

本文关键字:密钥 加密 Castle API 何知道 Bouncy | 更新日期: 2023-09-27 18:26:33

我很好奇Bouncy Castle API处理多个公钥以加密数据的过程。例如,如果我有3个不同的客户端希望我加密数据,并使用它们的公钥发送给它们进行加密,如果我分别为每个客户端标记公钥,那么bouncy castle如何确定客户端1应该使用公钥1而不是公钥3加密(这将是客户端3的公钥)?

从解密的角度来看,publicKeyEncryptedData附带了一个keyID标签,可以用来查找相应的私钥,但我不明白它是如何选择正确的密钥进行加密的。

Bouncy Castle API如何知道使用哪个密钥加密

没有。您必须指定所有收件人(即用于加密的证书)。当你使用PKCS#7进行加密时,过程是:

  • 生成随机对称密钥(即AES256)
  • 使用对称密钥加密数据
  • 使用接收方的公钥加密对称密钥(如果X个接收方应该能够解密,则对对称密钥加密X次)
  • 将其全部放在PKCS#7中(加密的对称密钥放在一个具有接收方某些标识的结构中。通常是用于加密对称密钥的证书的序列号和颁发者DN)

解密过程为:

  • 找到能够解密邮件的收件人。PKCS#7包含应该能够解密的所有收件人的序列号和颁发者DN。现在,在加密存储中查找具有序列号和颁发者DN的证书,该证书具有相应的私钥。如果您在加密存储中拥有所有收件人的私钥,那么将使用哪个私钥并不重要
  • 使用私钥解密加密过程中使用的对称密钥
  • 使用对称密钥解密数据