我發現了一些在線代碼,對於我正在嘗試做的工作相當不錯。我需要一些能夠加密密碼,將其保存到數據庫並輕鬆檢索的東西。下面的代碼幾乎可以處理我所尋找的任何事情。C#密碼加密
string UserName = txtUser.Text;
string password = txtPass.Text;
string encrKey = "keyvalue";
byte[] byteKey = { };
byte[] IV = {25, 47, 60, 88, 99, 106, 125, 139};
byteKey = Encoding.UTF8.GetBytes(encrKey.Substring(0, 8));
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputArray = Encoding.UTF8.GetBytes(password);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byteKey, IV), CryptoStreamMode.Write);
cs.Write(inputArray, 0, inputArray.Length);
cs.FlushFinalBlock();
password = Convert.ToBase64String(ms.ToArray());
SqlCommand cmd = new SqlCommand("INSERT INTO USers (UserName, Password) VALUES (@UserName, @Password)", myConnection);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@UserName", UserName);
cmd.Parameters.AddWithValue("@Password", password);
SqlDataReader rdr = cmd.ExecuteReader();
我遇到的問題是密碼爲8個字符或更長時的代碼錯誤。我得到這個錯誤:
System.Security.Cryptography.CryptographicException:指定的鍵不是此算法的有效大小。錯誤在Cryptostream行上生成。
我需要爲我的密鑰使用不同的類型嗎?
的可能重複[醃製密碼:最佳實踐(HTTP://計算器。com/questions/674904/salting-your-password-best-practices) –