【发布时间】:2020-06-18 04:45:15
【问题描述】:
我正在尝试复制 Android 应用 MobileSheetsPro 的文件哈希,其中有一个 hashcodes.txt,其中包含每个文件的哈希,以及路径、上次修改日期和文件大小。我们将只关注散列部分。
所以对于我上传的随机歌曲here,如果你想自己尝试一下,我使用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);
}
这会在使用默认种子 0 时打印出 4275668817 的哈希值,而在使用种子 0xc58f1a7b 作为第二个参数时会打印出 3020822739。
问题:应用程序的计算方式似乎不同。开发人员编写了以下内容,但我在他链接的代码中没有看到确切的功能:
看看这个:github link
这些是我使用过的课程。我打电话 Hashing.goodFast32Hash(HASH_KEY)) 其中 HASH_KEY 等于 0xC58F1A7B。
编辑我从开发者那里得到了更多信息:
我调用 Files.hash(file, Hashing.goodFast32Hash(HASH_KEY));使用 从中返回值,我在 HashCode 对象上调用“asInt()” 被退回。所以它是一个有符号整数值(负值只是 美好的)。是的,HASH_KEY 是传递给函数的种子值。
由于我不擅长 Java,我仍然不知道在 node-js 中复制它...
这就是我掌握的所有信息,伙计们。 有人知道我哪里出错了吗?
【问题讨论】:
标签: javascript java node.js hash murmurhash