Я пытаюсь асимметрично шифровать сообщение произвольной длины с помощью bouncycastle. (1.4+ с C#)Bouncycastle: что делает subKeyID-параметр AddKeyTransRecipient?
Это код, который у меня есть прямо сейчас. Предполагается (но не) генерировать сообщение 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
для и какое значение это нужно иметь?
У меня просто есть RSA-Keypair. Поэтому я не могу использовать getSubjectUniqueID(), потому что сертификата нет. – levinalex
Re: «Чтобы зашифровать сообщение произвольной длины, вы должны использовать AES только для обмена симметричным Keypassword и использовать этот ключ для симметричного шифрования». (Я думаю, вы имеете в виду RSA, AES - симметричный алгоритм) Разве это не то, что должен CMSEnvelopedData? – levinalex