我在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());
}