我有一组文件,这些文件被散列为xxhash64(小端),并存储在.mhl文件中。
同一组文件由单独的程序散列为xxhash64be(大端),并存储在单独的.mhl文件中。
我相信散列时文件的内容实际上是相同的,因为我一个接一个地生成了MHL文件。
第一个MHL文件:
<hash>
<file>SEB_3719.JPG</file>
<size>6338411</size>
<xxhash64>5a518dbf43939fe0</xxhash64>
...
</hash>
第二个MHL文件:
<xxhash64be>e09f9343bf8d515a</xxhash64>
这两个哈希可以用于相互比较吗?可以以其他方式转换或显示它们吗?
还是需要原始文件?
答案 0 :(得分:0)
这两个哈希实际上是相同的。但是一个使用Little Endian约定进行序列化,另一个使用Big Endian约定进行序列化,因此反转了字节顺序。您可以直观地检查每对十六进制是否相同,只是顺序相反。
正式的xxHash项目建议使用大端字节序约定,因为这是显示64位数字的自然方法。它甚至提供了一组canonical functions,以保证字节表示在任何机器上都是相同的,而不管其字节顺序如何。