我对密码学还比较陌生,想要了解哈希算法的原理。
我找到了以下资源,用于创建密码的哈希值,可以存储在我的数据库中。
public static string hashPasswordGenerator(string password)
{
System.Security.Cryptography.SHA256Managed crypt = new System.Security.Cryptography.SHA256Managed();
StringBuilder hash = new StringBuilder();
byte[] cry = crypt.ComputeHash(Encoding.UTF8.GetBytes(password), 0, Encoding.UTF8.GetByteCount(password));
return Convert.ToBase64String(cry);
}
我的示例用户是User1
,密码为Password1
,这将返回哈希版本GVE/3J2k+3KkoF62aRdUjTyQ/5TVQZ4fI2PuqJ3+4d0=
我的问题是:
- 这是否安全?
- 我应该添加盐吗?如果需要,有人能展示一个简单的例子吗?我不太了解如何生成盐以使其每次都与密码匹配。
- 如果有人拥有这个hashPasswordGenerator方法,他们能反向工程我的密码吗?
提前感谢。
StringBuilder hash = new StringBuilder();
从未被使用。 - Ashigore