Я пытаюсь асимметрично зашифровать сообщение произвольной длины с помощью bouncycastle. (1.4+ с C #)
Это код, который у меня есть сейчас. Предполагается (но не) генерировать сообщение CMS, в котором сами данные зашифрованы AES256 со случайным ключом, а ключ зашифрован открытым ключом от keyPair
.
keyPair
- это ключ RSA (RsaKeyParameters)
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();
}
Для чего нужен параметр subKeyId
в методе Encrypt
и какое значение он должен иметь?