2
不同我有像这样的MD5哈希方法: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
以回应这里的一些其他答案..但唉。没有。
任何和所有的帮助,非常感谢在这件事上!
UPDATE:
我已经得到的地方,我比较了“好”的inputBytes阵列与一个“坏”的机器和阵列是相同的点。
那么ComputeHash方法在计算机之间可以做什么呢?我觉得这不是潜在的问题..但在这一点上,哈希返回不同的地方。我很茫然。
你是否100%确定你的输入是相同的?我知道这是一个烦人的问题,但这将是我检查是否有这个问题的第一件事 – 2013-05-14 15:11:18
同意@Bartdude。也可能是大/小端? OS差异?病毒扫描器修改?从“坏机器”中取出文件并将其复制回其中一台匹配的机器。走着瞧吧。 – 2013-05-14 15:13:22
像@Bartdude一样,我也对输入产生怀疑。仔细检查所有机器上的输入始终具有相同的编码等等。如果输入不匹配,则方法本身是不是文化不变是无关紧要的。 – Smallhacker 2013-05-14 15:13:32