哈希值是全局唯一的

1 c# java hash

我想为文件生成哈希码.使用C#我会做这样的事情然后将值存储在数据库中.

byte[] b = File.ReadAllBytes(@"C:\image.jpg");
string hash = ComputeHash(b);
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用一个实现相同散列算法(Md5)的Java程序,我可以期望散列值等于C#中生成的值吗?如果我从不同的环境,Windows,Linux或Mac执行java程序怎么办?

Ste*_*n C 8

哈希值不是全局唯一的.但这不是你真正要求的.

您真正想知道的是,散列算法(例如MD5)是否会为不同操作系统平台上的相同文件生成相同的散列值.答案就是"是"......前提是文件是逐字节相同的.

在二进制格式的情况下应该是这种情况.在文本文件的情况下,不同字符编码之间的代码转换或改变行终止序列将使文件在字节级别不同并导致不同的MD5哈希值.