gpt4 book ai didi

c# - "Bad Data"加密异常

转载 作者:太空狗 更新时间:2023-10-29 17:32:12 25 4
gpt4 key购买 nike

首先,我只是出于学术目的编写了以下代码。我这样说的原因是因为我没有把它放在生产环境中,因此我“绕过了”一些我需要做的开销,我只需要能够使用加密/解密字符串下面的代码。我能够做到几次,但由于某种原因,我开始收到“CryptographicException Bad Data”并且我不确定是什么导致了这个问题。

   private string RSAEncrypt(string value)
{
byte[] encryptedData = Encoding.Unicode.GetBytes(value);

CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Encrypt(encryptedData, false);
return Convert.ToBase64String(encryptedData);

}

}



private string RSADecrypt(string value)
{

byte[] encryptedData = Encoding.Unicode.GetBytes(value);

CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
encryptedData = RSA.Decrypt(encryptedData,false);
return Convert.ToBase64String(encryptedData);

}
}

它只是在 RSADecrypt 调用上抛出这个异常。

有什么想法吗?我在某处读到它可能与传递到 RSA.Decrypt 的加密数据的预期大小有关。

谢谢

最佳答案

  • 使用字符串编码(即 Encoding.Unicode)来回转换明文。

  • 使用 Base-64 来回转换加密数据(即 Convert.[To/From]Base64String);

像这样:

private string RSAEncrypt(string value)
{
byte[] plaintext = Encoding.Unicode.GetBytes(value);

CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
byte[] encryptedData = RSA.Encrypt(plaintext, false);
return Convert.ToBase64String(encryptedData);
}
}

private string RSADecrypt(string value)
{
byte[] encryptedData = Convert.FromBase64String(value);

CspParameters cspParams = new CspParameters();
cspParams.KeyContainerName = _rsaContainerName;
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048,cspParams))
{
byte[] decryptedData = RSA.Decrypt(encryptedData,false);
return Encoding.Unicode.GetString(decryptedData);
}
}

关于c# - "Bad Data"加密异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com