Использование Azure Key Vault RSA Key для шифрования и дешифрования строк - PullRequest
0 голосов
/ 29 июня 2018

Я настроил хранилище ключей 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?

Спасибо!

1 Ответ

0 голосов
/ 29 июня 2018

ToRSA имеет логический параметр по умолчанию, указывающий, должен ли личный ключ быть доступным или нет.

Поскольку вы явно не сказали true, это неявно false, поэтому ваш ключевой объект доступен только для публичного использования. С помощью открытого ключа RSA вы можете зашифровать данные или проверить подпись, но не можете подписать или расшифровать.

...