我有一个像这样的MD5哈希方法:
MD5 md5 = System.Security.Cryptography.MD5.Create();
StringBuilder sb = new StringBuilder();
lock (md5)
{
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2").ToString(CultureInfo.InvariantCulture));
}
}
return sb.ToString();
在使用相同输入的几台本地开发机器上,这将返回相同的哈希值。在登台和现场服务器上,它正在恢复预期值。
但是,在一些本地开发机器上,值不同。我无法弄清楚为什么?
我在这里添加了lock
和CultureInfo
以回应其他一些答案..但是唉。没有。
在这件事上非常感谢任何和所有的帮助!
更新
我已经达到了将'good'与'bad'机器上的inputBytes数组进行比较并且数组相同的程度。
那么ComputeHash方法在机器之间可能有什么不同呢?我觉得这不是潜在的问题..但在这一点上,哈希回来的地方不同。我很茫然。
答案 0 :(得分:1)
正如@bartdude所说,由于日期时间变量来自不同的系统时间格式,因此两台机器的输入都不同。
希望这有助于将来。