私はbouncycastleで任意の長さのメッセージを非対称に暗号化しようとしています。 (C#で1.4+)Bouncycastle:AddKeyTransRecipientのsubKeyID-Parameterは何をしますか?
これは私が今持っているコードです。それは、データ自体がAES256でランダムな鍵で暗号化され、鍵がkeyPair
からの公開鍵で暗号化されているCMSメッセージを生成すると思われます(ただし、生成しません)。
keyPair
public static byte[] Encrypt(byte[] input, AsymmetricCipherKeyPair keyPair)
{
CmsEnvelopedDataGenerator generator = new CmsEnvelopedDataGenerator();
// those two lines are certainly wrong.
// I have no idea what the subKeyID parameter does
byte[] subKeyId = new byte[] {};
generator.AddKeyTransRecipient(keyPair.Public, subKeyId);
CmsProcessableByteArray cmsByteArray = new CmsProcessableByteArray(input);
CmsEnvelopedData envelopeData =
generator.Generate(cmsByteArray, CmsEnvelopedDataGenerator.Aes256Cbc);
return envelopeData.GetEncoded();
}
ためEncrypt
方法でsubKeyId
パラメータは何であり、それは持っているどのような値を必要としないのですか?
RSAキーペアがあります。したがって、証明書がないため、getSubjectUniqueID()を使用することはできません。 – levinalex
Re: "奇妙な長さのメッセージを暗号化するには、AESを使用して対称キーパスワードを交換し、このキーを対称暗号化に使用する必要があります。" (私はあなたがRSAを意味すると思う、AESは対称アルゴリズムです) これはCMSEnvelopedDataがやろうとしているものではありませんか? – levinalex