为什么每次从 RijndaelManaged 返回的密文都不一样?
Why is cipher text returned from RijndaelManaged different each time?
我想使用 RijndaelManaged 通过任何加盐来加密字符串,因此如果我使用相同的密钥传递加密字符串,我将收到相同的密文。
我调用的方法如下所示
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")
但每次它运行时 returns 一个差异值。我错过了什么?
编辑
正如已接受的答案所指出的,我忘记设置密钥,所以添加这个就成功了
cipher.Key = Convert.FromBase64String("C53wafJw3QmImGBN8Se9EnIJgiQq7LyoWHzUEFQI/B0=");
因为你没有设置密钥,每次调用你的方法时都会生成不同的密钥,所以你会得到不同的密文。您应该明确设置 Key
属性 以便始终使用相同的密钥。
我想使用 RijndaelManaged 通过任何加盐来加密字符串,因此如果我使用相同的密钥传递加密字符串,我将收到相同的密文。 我调用的方法如下所示
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")
但每次它运行时 returns 一个差异值。我错过了什么?
编辑
正如已接受的答案所指出的,我忘记设置密钥,所以添加这个就成功了
cipher.Key = Convert.FromBase64String("C53wafJw3QmImGBN8Se9EnIJgiQq7LyoWHzUEFQI/B0=");
因为你没有设置密钥,每次调用你的方法时都会生成不同的密钥,所以你会得到不同的密文。您应该明确设置 Key
属性 以便始终使用相同的密钥。