我需要为我的雇主向Web应用程序的客户提供某些文件的校验和。
我想向用户展示他们客户端工具可能生成的哈希值,因此我一直在比较在线哈希工具。我的问题是关于它们的哈希形式,因为它们不同,很奇怪。
经过快速搜索,我测试了5个:
- http://www.convertstring.com/Hash/SHA256
- http://www.freeformatter.com/sha256-generator.html#ad-output
- http://online-encoder.com/sha256-encoder-decoder.html
- http://www.xorbin.com/tools/sha256-hash-calculator
- http://www.everpassword.com/sha-256-generator
巧合的是,网站1、2和3向我呈现了与我的C#代码相同的哈希值:
var sha256Now = ComputeHash(Encoding.UTF8.GetBytes("test\r\ntest"), new SHA256CryptoServiceProvider());
private static string ComputeHash(byte[] inputBytes, HashAlgorithm algorithm)
{
var hashedBytes = algorithm.ComputeHash(inputBytes);
return BitConverter.ToString(hashedBytes);
}
问题是:哪些网站是“正确的”?
有没有办法知道哈希是否符合标准?
更新1:将编码更改为UTF8。这对创建输出哈希没有影响。感谢@Hans。(因为我的Encoding.Default可能是Encoding.UTF8)
更新2:也许我应该稍微扩展一下问题,因为它可能没有解释清楚,抱歉。我想问的更多是一个可用性问题而不是技术问题;我应该提供所有具有不同行结尾的哈希吗?还是应该坚持一个?客户可能会打电话给我的公司,担心他们的文件以某种方式被更改了,如果他们有不同的计算哈希的方法。通常如何解决这个问题?