Я настроил хранилище ключей Azure для получения ключей RSA для шифрования. Azure отправит мне объект типа KeyBundle. Этот объект содержит JsonWebKey типа RSA размером 2048 . Глядя на мой ключ RSA, у него есть 2 метода: Encrypt(byte[] data, RSAEncryptionPadding padding)
и Decrypt(byte[] data, RSAEncryptionPadding padding)
. Сейчас я пытаюсь зашифровать и расшифровать простую строку, например:
public EncryptionManager(KeyBundle encryptionKey)
{
string test = "Hello World!";
var key = encryptionKey.Key.ToRSA();
var encryptedString = key.Encrypt(Encoding.UTF8.GetBytes(test), RSAEncryptionPadding.OaepSHA256);
var decryptedString = key.Decrypt(encryptedString, RSAEncryptionPadding.OaepSHA256);
}
Шифрование работает, но дешифрование вызывает исключение с сообщением:
Ключ не существует.
Вот StackTrace
в System.Security.Cryptography.RSAImplementation.RSACng.EncryptOrDecrypt (SafeNCryptKeyHandle
клавиша, ввод ReadOnlySpan`1, AsymmetricPaddingMode paddingMode, Void *
paddingInfo, логическое шифрование) в
System.Security.Cryptography.RSAImplementation.RSACng.EncryptOrDecrypt (байт []
данные, заполнение RSAEncryptionPadding, логическое шифрование) в
System.Security.Cryptography.RSAImplementation.RSACng.Decrypt (байты []
данные, заполнение RSAEncryptionPadding) в
NxtUtils.Security.EncryptionManager..ctor (KeyBundle encryptionKey) в
C: \ Репо \ Enigma \ EnigmaPrototype \ SharedLibaries \ NxtUtils \ Security \ EncryptionManager.cs: линия
26
Я действительно не знаком с криптографическими алгоритмами. У меня такой вопрос: как я могу зашифровать и расшифровать простую строку, используя этот ключ RSA, предоставленный Azure?
Спасибо!