gpt4 book ai didi

c# - 使用 Aes 解密失败

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:02 26 4
gpt4 key购买 nike

我正在使用这个函数来加密我的 UWP 项目中的数据:

public string Encrypt(string text, string key)
{
byte[] buffer = Encoding.UTF8.GetBytes(text);
byte[] sessionKey = Encoding.UTF8.GetBytes(key);

Aes myAes = Aes.Create();

myAes.Mode = CipherMode.ECB;
myAes.KeySize = 128;
myAes.Key = sessionKey;
myAes.Padding = PaddingMode.PKCS7;

ICryptoTransform encryptor = myAes.CreateEncryptor();
buffer = encryptor.TransformFinalBlock(buffer, 0, buffer.Length);

return Convert.ToBase64String (buffer);

}

但是在解密从 Encrypt() 返回的数据时,我得到了不同的结果(不等于 Encrypt() 的文本参数)。我正在使用以下代码:

public string Decrypt(string text, string key)

{

byte[] buffer = Convert.FromBase64String(text);
byte[] sessionKey = Encoding.UTF8.GetBytes(key);

Aes myAes = Aes.Create();

myAes.Mode = CipherMode.ECB;
myAes.KeySize = 128;
myAes.Key = sessionKey;
myAes.Padding = PaddingMode.PKCS7;

ICryptoTransform decryptor = myAes.CreateDecryptor();
buffer = decryptor.TransformFinalBlock(buffer, 0, buffer.Length);

return Convert.ToBase64String(buffer);
}

我使用相同的 key 进行加密和解密

更新:传递给 Encrypt() 的文本参数:450131283::0300DC98050044C406000100040052C40100626B02007E810900660F

从 Encrypt() 返回文本:"lzkPu35Hq7j52IiMWRYSS6j7Vg84abVmhXmNpSxHShJDTbOqkZRFtsPZkEzTsjgRT4MzRHCQUS6MCiq1e5JCune4bZZi1nxxwHtEjZLKZ9E="

我传递给 Decrypt() 方法的相同(以上)值得到以下信息:“NDUwMTMxMjgzOjowMzAwREM5ODA1MDA0NEM0MDYwMDAxMDAwNDAwNTJDNDAxMDA2MjZCMDIwMDdFODEwOTAwNjYwRg==”

最佳答案

问题是你在解密结束时做了什么:

return Convert.ToBase64String(buffer);

您实际上想要将解密的二进制数据转换回字符串,其方式与您将其字符串转换为明文二进制数据的原始方式相同,因此您需要:

return Encoding.UTF8.GetString(buffer);

解决此类问题的最佳方法通常是从每个方向查看转换链中的每个步骤,并确保它们是平衡的。所以它应该是这样的:

Text
(Encode with UTF-8)
Non-encrypted binary data
(Encrypt)
Encrypted binary data
(Convert to base64)
Encrypted data as base64 text
(Store or whatever...)
Encrypted data as base64 text
(Convert from base64)
Encrypted binary data
(Decrypt)
Non-encrypted binary data
(Decode with UTF-8)
Text

我说的是“使用 UTF-8 解码”,而你说的是“转换为 base64”,因此解码步骤与编码步骤不匹配。

关于c# - 使用 Aes 解密失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44180353/

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