gpt4 book ai didi

c# - 为什么每次从 RijndaelManaged 返回的密文都不一样?

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

我想使用 RijndaelManaged 通过任何加盐来加密字符串,因此如果我使用相同的 key 传递加密字符串,我将收到相同的密文。我调用的方法看起来像这样

     public static string GetEncryptedData(string plainText)
{
var cipher = new RijndaelManaged();

string keyString = "really long string"

var key = Encoding.UTF8.GetBytes(keyString);
cipher.Padding = PaddingMode.Zeros;
cipher.Mode = CipherMode.ECB;
cipher.KeySize = 256;
cipher.BlockSize = 256;

var cryptoTransform = cipher.CreateEncryptor();
byte[] stuffToEncrypt = Encoding.UTF8.GetBytes(plainText);
byte[] cipherText = cryptoTransform.TransformFinalBlock(stuffToEncrypt, 0, plainText.Length);

return Convert.ToBase64String(cipherText);
}

我以为如果我设置

cipher.Padding = PaddingMode.Zeros;
cipher.Mode = CipherMode.ECB;

不会引入随机性,每次使用相同的输入调用此方法时,结果都是相同的

GetEncryptedData("somestring")

但每次运行时都会返回一个差异值。我错过了什么?

编辑

正如在接受的答案中指出的那样,我忘记设置 key ,所以添加这个就可以了

cipher.Key = Convert.FromBase64String("C53wafJw3QmImGBN8Se9EnIJgiQq7LyoWHzUEFQI/B0=");

最佳答案

因为您没有设置 key ,所以每次调用您的方法时都会生成不同的 key ,因此您会得到不同的密文。您应该显式设置 Key 属性,以便始终使用相同的 key 。

关于c# - 为什么每次从 RijndaelManaged 返回的密文都不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30386123/

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