Mat*_*att 2 c# asp.net encryption
我发现一些在线代码可以很好地用于我想做的事情.我需要一些能够加密密码,将其保存到数据库并轻松检索的东西.以下代码几乎可以满足我的一切需求.
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();
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是密码为8个字符或更长时间的代码错误.我收到此错误:
System.Security.Cryptography.CryptographicException:指定的键不是此算法的有效大小.在Cryptostream行上生成错误.
我需要为我的钥匙使用不同的类型吗?
Var*_*ant 14
通常的做法是不加密数据库中的密码,而是对其进行哈希处理.
当用户尝试登录时,您将获取其键入的密码,将其哈希并与存储在数据库中的哈希进行比较.
行业标准哈希算法是SHA-1,可在.NET中读取.
为了更高的安全性,您在散列中使用"Salt".
您可以在这里阅读更多相关信息:Salting Your Password:Best Practices?
| 归档时间: |
|
| 查看次数: |
6338 次 |
| 最近记录: |