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