Мне нужно реализовать цифровой конверт с использованием AES и RSA, но у меня проблемы с реализацией алгоритма RSA в .NET.
Мне удалось зашифровать данные (AES) случайным симметричным ключом, но теперь я должен зашифровать ключ с помощью RSA.
Ключ представляет собой массив байтов (byte[]
), и открытый у меня открытый ключ сообщает мне только модуль и открытый показатель, оба массива байтов (byte[]
).
Используя только эти два параметра, как я могу зашифровать сгенерированный мной ключ AES с помощью RSA?
Следующий код извлекает сообщение из файла и шифрует его с помощью AES.
После этого открытый ключ считывается из файла открытого ключа, а модуль и показатель степени находятся в соответствующих им байтовых массивах. Как бы я продолжил шифровать symmetricKey
с помощью RSA?
String msgString = Systematic.GetFileContents(messagePath);
Byte[] initVector = new byte[] { 50, 60, 70, 80, 90, 40, 50, 60, 70, 80, 90, 40, 60, 80, 70, 90 };
Byte[] symetricKey = AesCrypt.GenerateRandomKey();
Byte[] encryptedMessage = AesCrypt.Encrypt(msgString, symetricKey, initVector, mode);
Byte[] modulus = null;
Byte[] publicExp = null;
DataFormatHelper.ReadPublicKey(publicKeyPath, "RSA", ref modulus, ref publicExp);
P.S. В ответ на ответ упомяну rsa.ImportParameters
:
Я пытался с rsa.ImportParameters(keyInfo)
, но он выбрасывает CryptographicException
("Bad Data"
). Как насчет размеров массива?
В настоящее время модуль составляет 128 байтов, а показатель степени - 64 байта.