我正在尝试复制 Android 应用程序 MobileSheetsPro 的文件哈希,其中有一个 hashcodes.txt,其中包含每个文件的哈希,以及路径、上次修改日期和文件大小。我们将只关注散列部分。
因此,对于我在这里上传的随机歌曲,如果您想自己尝试一下,我正在使用murmurhash-native
npm 包将其转换为缓冲区,然后像这样散列它:
const fs = require("fs");
const { promisify } = require("util");
const { murmurHash } = require("murmurhash-native");
const readFileAsync = promisify(fs.readFile);
async function hashcodeObjFromFilePath(filepath) {
const buf = await readFileAsync(filepath);
const h = murmurHash(buf);
console.log(h);
}
这会打印出4275668817
使用默认种子 0 以及3020822739
使用种子0xc58f1a7b
作为第二个参数时的哈希值。
问题:该应用程序似乎以不同的方式计算它。开发人员编写了以下内容,但我在他链接的代码中没有看到确切的功能:
看看这个:github链接
这些是我使用过的课程。我调用 Hashing.goodFast32Hash(HASH_KEY)) 其中 HASH_KEY 等于 0xC58F1A7B。
编辑我从开发人员那里得到了更多信息:
我打电话给 Files.hash(file, Hashing.goodFast32Hash(HASH_KEY)); 使用其中的返回值,我在返回的 HashCode 对象上调用“asInt()”。所以它是一个有符号整数值(负值就可以了)。是的,HASH_KEY 是传递给函数的种子值。
由于我不擅长 Java,我仍然不知道在 node-js 中复制它......
这就是我掌握的所有信息,伙计们。任何人都看到我要去哪里错了吗?