【发布时间】:2018-12-08 18:03:27
【问题描述】:
我已设置 Azure Key Vault 以检索 RSA 密钥进行加密。 Azure 向我发送一个 KeyBundle 类型的对象。此对象包含一个 大小为 2048 的 RSA 类型的 JsonWebKey。查看我的 RSA 密钥,它有两种方法,称为 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);
}
加密有效,但解密会抛出异常消息:
密钥不存在。
这里是堆栈跟踪
在 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:\Repos\Enigma\EnigmaPrototype\SharedLibaries\NxtUtils\Security\EncryptionManager.cs:line 26
我真的不熟悉密码算法。我的问题是:如何使用 Azure 提供的 RSA 密钥加密和解密一个简单的字符串?
谢谢!
【问题讨论】:
-
"但是解密会抛出异常。"我没看到。
标签: c# .net azure encryption rsa