Bouncy Castle API如何知道使用哪个密钥加密
本文关键字:密钥 加密 Castle API 何知道 Bouncy | 更新日期: 2023-09-27 18:26:33
我很好奇Bouncy Castle API处理多个公钥以加密数据的过程。例如,如果我有3个不同的客户端希望我加密数据,并使用它们的公钥发送给它们进行加密,如果我分别为每个客户端标记公钥,那么bouncy castle如何确定客户端1应该使用公钥1而不是公钥3加密(这将是客户端3的公钥)?
从解密的角度来看,publicKeyEncryptedData附带了一个keyID标签,可以用来查找相应的私钥,但我不明白它是如何选择正确的密钥进行加密的。
没有。您必须指定所有收件人(即用于加密的证书)。当你使用PKCS#7进行加密时,过程是:
- 生成随机对称密钥(即AES256)
- 使用对称密钥加密数据
- 使用接收方的公钥加密对称密钥(如果X个接收方应该能够解密,则对对称密钥加密X次)
- 将其全部放在PKCS#7中(加密的对称密钥放在一个具有接收方某些标识的结构中。通常是用于加密对称密钥的证书的序列号和颁发者DN)
解密过程为:
- 找到能够解密邮件的收件人。PKCS#7包含应该能够解密的所有收件人的序列号和颁发者DN。现在,在加密存储中查找具有序列号和颁发者DN的证书,该证书具有相应的私钥。如果您在加密存储中拥有所有收件人的私钥,那么将使用哪个私钥并不重要
- 使用私钥解密加密过程中使用的对称密钥
- 使用对称密钥解密数据