我不确定密码哈希是如何工作的(将在以后实现),但现在需要创建数据库模式.
我正在考虑将密码限制为4-20个字符,但据我所知,加密后的哈希字符串将具有不同的长度.
那么,如何将这些密码存储在数据库中?
我正在为一个应用程序编写一个注册表单,但仍然遇到了新的c#问题.
我希望加密/哈希密码到md5或sha-256,最好是sha-256.
有什么好例子吗?我希望它能够从"字符串密码"中获取信息; 然后散列它并存储在变量"string hPassword;"中.有任何想法吗?
我在用户注册期间存储了密码的salt和hash值...但是在登录期间我然后对用户给出的密码进行加密和散列,会发生什么是新的盐并生成新的哈希....
string password = collection["Password"];
reg.PasswordSalt = CreateSalt(6);
reg.PasswordHash = CreatePasswordHash(password, reg.PasswordSalt);
Run Code Online (Sandbox Code Playgroud)
这些陈述都在注册和登录....
注册期间的盐和哈希是eVSJE84W和18DE22FED8C378DB7716B0E4B6C0BA54167315A2
在登录期间它是4YDIeARH和12E3C1F4F4CFE04EA973D7C65A09A78E2D80AAC7.....任何建议....
public static string CreateSalt(int size)
{
//Generate a cryptographic random number.
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buff = new byte[size];
rng.GetBytes(buff);
// Return a Base64 string representation of the random number.
return Convert.ToBase64String(buff);
}
public static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = String.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
return hashedPwd;
}
Run Code Online (Sandbox Code Playgroud) hash ×4
passwords ×3
c# ×2
asp.net-mvc ×1
comparison ×1
cryptography ×1
mysql ×1
salt ×1
sha256 ×1
types ×1