我正在创建上传图像的sha1校验和,我的目的是将其与来自第三方的同一图像的sha1校验和进行比较。
我的代码返回一个成功的十六进制,但它与正在发送的校验和不同。我使用在线转换器对此进行了测试:http://hash.online-convert.com/sha1-generator;此转换器返回的十六进制与第三方返回的十六进制相同。
显然我在某个地方错过了一步,但我想不出来。我正在阅读文件:
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.ToArray();
然后我尝试使用以下方法对此数组进行十六进制:
SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
string hex = BitConverter.ToString(sha1.ComputeHash(image)).Replace("-", "");
我还尝试在将流转换为数组之前对其进行转换。
如何在http://hash.online-convert.com/sha1-generator处获得与转换器相同的结果?
答案 0 :(得分:0)
谢谢@Alexei Levenkov,你是对的。我被传递的图像似乎已经完成了一些转换。如果我从原始文件路径创建数组,我得到相同的校验和:
e.g.
byte[] image = File.ReadAllBytes(originalFilePath);
现在我只希望在最终实现中始终可以访问此路径。