所以,我是David Hayden在他的博客(http://davidhayden.com/blog/dave/archive/2004/02/16/157.aspx)上发布的方法来创建一个salt并通过以下方式创建用户密码获取用户的原始密码和生成的salt,并使用SHA1来散列值。
然后我将salt和哈希密码存储在数据库中。
该网站目前是负载均衡的,所以我想知道两个服务器的结果哈希值是否相同。
以下是David Hayden博客上发布的代码片段:
private 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);
}
private static string CreatePasswordHash(string pwd, string salt)
{
string saltAndPwd = String.Concat(pwd, salt);
string hashedPwd =
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
return hashedPwd;
}
我问的原因是此代码使用代码段:
FormsAuthentication.HashPasswordForStoringInConfigFile(
saltAndPwd, "sha1");
答案 0 :(得分:3)
我认为你在这里提出的关键问题是SHA1算法是否与运行的服务器相同。在这种情况下答案是肯定的。
据推测,您将生成的盐存储在所有服务器都可以访问它的地方,以及密码哈希?因此,用于生成salt的方法不需要在服务器之间保持一致。
答案 1 :(得分:1)
此方法仅使用传递给它的参数 别担心;它会起作用。
答案 2 :(得分:0)
“要解决此问题,验证密钥和decryptionKey值必须在Web场中的所有计算机上都相同。” http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_webfarmscenarios