gpt4 book ai didi

c# - 使用 RijndaelManaged 时出现 CryptographicException

转载 作者:行者123 更新时间:2023-11-30 22:24:01 24 4
gpt4 key购买 nike

我正在尝试使用 .NET 中的 RijndaelManaged 类来加密文本字符串。但是,我不断收到 CryptographicException(“要解密的数据长度无效”)。此消息并不是很有帮助,尤其是当我尝试加密数据而不是解密时它会发生。下面是代码。

public static string EncryptKMSToken(string valueToEncrypt, string encryptionKey)
{
string results = string.Empty;

using (RijndaelManaged aes = new RijndaelManaged())
{
aes.BlockSize = 128;
aes.KeySize = 128;
aes.Padding = PaddingMode.PKCS7;
aes.Mode = CipherMode.CBC;

UTF8Encoding byteTransform = new UTF8Encoding();
aes.Key = byteTransform.GetBytes(encryptionKey);
ICryptoTransform encryptor = aes.CreateDecryptor(aes.Key, aes.IV);

using (MemoryStream stream = new MemoryStream())
{
using (CryptoStream encryptStream = new CryptoStream(stream, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(encryptStream))
{
writer.Write(valueToEncrypt);
}

byte[] encryptedBytes = stream.ToArray();
results = byteTransform.GetString(encryptedBytes);
}
}
}

return results;
}

错误发生在第三个 using 语句关闭时(即 writer.Write(valueToEncrypt) 之后的行)。如果我尝试将第三个 using block 内的那两行下面的两行移动,我最终得到一个空字符串(和错误仍然发生。我直接从这个网站(http://stackoverflow.com/questions/273452/using-aes-encryption-in-c-sharp)中提取这段代码,但它似乎不起作用。有没有人有什么想法吗?

最佳答案

是的,但我认为如果您重新阅读您的代码,您也会这样做:

ICryptoTransform encryptor = aes.CreateDecryptor(aes.Key, aes.IV);

这是一个名为加密器的解密器...

关于c# - 使用 RijndaelManaged 时出现 CryptographicException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019127/

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