相同的加密算法,相同的输入,不同的结果

时间:2014-04-30 04:24:25

标签: c# encryption cryptography

我在Windows应用程序中使用它来保证安全性,重要的是如果用户加密相同的字符串,它们会获得与加密完全相同字符串的任何其他用户相同的结果。我在Windows应用程序中使用此例程已有5年了。几乎所有的时间,这都很完美。但是,在很长一段时间内,我会得到一个与其他人没有相同结果的用户。

在下面的代码中,我更改了sEncriptKey和sInitVector值,但是我使用的值具有正确的长度,并且由从不更改的简单字母数字字符组成。另外,sText通常很小,比如8到30个字符。

感谢您的帮助。

public static string EncryptString(string sText) {

   string sEncriptKey = "012345678901234567890123456789AA";// 32 Chars
   string sInitVector = "0123456789ABCDEF"; // 16 Chars;

   byte[] oByteArrayText = Encoding.UTF8.GetBytes(sText);

   System.Security.Cryptography.SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();

   MemoryStream ms = new MemoryStream();
   byte[] rgbIV = Encoding.ASCII.GetBytes(sInitVector);
   byte[] key = Encoding.ASCII.GetBytes(sEncriptKey);
   CryptoStream cs = new CryptoStream(ms, rijn.CreateEncryptor(key, rgbIV), CryptoStreamMode.Write);

   cs.Write(oByteArrayText, 0, oByteArrayText.Length);

   cs.Close();

   return Convert.ToBase64String(ms.ToArray());
}

0 个答案:

没有答案