javascript - 不同位置的相同文件是否会有不同的 sha1 哈希值?

标签 javascript node.js hash cryptography sha1

var crypto = require('crypto');
var fs = require('fs');
var file1 = process.argv[2];
var file2 = process.argv[3];

var sha1sum = function(input){
    return crypto.createHash('sha1').update(JSON.stringify(input)).digest('hex')
};

var first = sha1sum(file1);
var second = sha1sum(file2);

console.log(first + '  ' + file1);
console.log(second + '  ' + file2);
if (first == second) {
    console.log("the two hashes are equal");
} else {
    console.log("the two hashes aren't equal");
}

以上是我当前使用的代码。它接受两个文件输入并比较它们的哈希值。但是,当从两个不同位置传递同一文件作为参数时,它们具有不同的 sha1 哈希值。这是应该发生的吗,还是我的代码不正确?

最佳答案

所以,这取决于你要散列的内容。

正如所指出的,我只是对名称进行哈希处理。如果您仅对文件内容进行哈希处理,则 sha1 值将相同。但是,如果将地址值和 sha1 值结合起来,则在比较两个不同位置的同一文件时,您将得到不同的 sha1。 sha1 值是否与位置无关完全取决于您传递到 sha1 值中的内容。

关于javascript - 不同位置的相同文件是否会有不同的 sha1 哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30876540/

相关文章:

php - 重定向是保持散列

c++ - CryEngine 的哈希函数是如何工作的?

javascript - videojs 多种音频语言

node.js - 设置 Express 的 cookie 默认值

javascript - 如何验证 einaros 的 ws websocket 包上的原始 url

node.js - 使用 Node.js 创建 WordPress 页面

ios - 来自字符串的 MD5 哈希值不匹配

javascript - 定期运行 JavaScript 函数

javascript - 如何从 MVC asp.net Controller 为 javascript 变量赋值

javascript 模块创建和初始化