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哈希值。这应该发生,还是我的代码不正确?
答案 0 :(得分:0)
所以,它归结为你正在散列的东西。
正如所指出的那样,我只是在吹嘘这个名字。如果您只是散列文件内容,则sha1值将相同。但是,如果将地址值和sha1值组合在一起,则在比较两个不同位置的同一文件时将具有不同的sha1。 sha1值是否与位置无关,完全取决于您传入sha1值的内容。