可以将big-endian xxhash与little-endian哈希进行比较吗?

时间:2019-03-19 23:12:00

标签: hash

我有一组文件,这些文件被散列为xxhash64(小端),并存储在.mhl文件中。

同一组文件由单独的程序散列为xxhash64be(大端),并存储在单独的.mhl文件中。

我相信散列时文件的内容实际上是相同的,因为我一个接一个地生成了MHL文件。

第一个MHL文件:

<hash>
    <file>SEB_3719.JPG</file>
    <size>6338411</size>
    <xxhash64>5a518dbf43939fe0</xxhash64>
    ...
</hash>

第二个MHL文件:

    <xxhash64be>e09f9343bf8d515a</xxhash64>

这两个哈希可以用于相互比较吗?可以以其他方式转换或显示它们吗?

还是需要原始文件?

1 个答案:

答案 0 :(得分:0)

这两个哈希实际上是相同的。但是一个使用Little Endian约定进行序列化,另一个使用Big Endian约定进行序列化,因此反转了字节顺序。您可以直观地检查每对十六进制是否相同,只是顺序相反。

正式的xxHash项目建议使用大端字节序约定,因为这是显示64位数字的自然方法。它甚至提供了一组canonical functions,以保证字节表示在任何机器上都是相同的,而不管其字节顺序如何。