Ich versuche eine Nachricht beliebiger Länge asynmetrisch mit Bouncycastle zu verschlüsseln. (1.4+ mit C#)Bouncycastle: was macht der subKeyID-Parameter von AddKeyTransRecipient?
Dies ist der Code, den ich gerade habe. Es soll (aber nicht) eine CMS-Nachricht erzeugen, bei der die Daten selbst mit AES256 mit einem zufälligen Schlüssel verschlüsselt sind und der Schlüssel mit dem öffentlichen Schlüssel von keyPair
verschlüsselt ist.
keyPair
ist ein RSA-Key (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();
}
Was für die subKeyId
Parameter in der Encrypt
Methode ist und welchen Wert hat es haben müssen?
Ich habe nur ein RSA-Schlüsselpaar. Daher kann ich getSubjectUniqueID() nicht verwenden, da kein Zertifikat vorhanden ist. – levinalex
Betreff: "Um eine Nachricht mit arrarischer Länge zu verschlüsseln, sollten Sie AES nur zum Austausch eines symmetrischen Schlüsselpassworts verwenden und diesen Schlüssel für die symmetrische Verschlüsselung verwenden." (Ich denke du meinst RSA, AES ist ein symmetrischer Algorithmus) Ist das nicht genau das, was CMSEnvelopedData tun soll? – levinalex