不同位置的相同文件会有不同的 sha1 哈希值吗?
Will identical files in different locations have different sha1 hashes?
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 值的内容。
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 值的内容。