Javascript 对JSON对象的不同数组进行散列可以为每个对象获得相同的散列值

Javascript 对JSON对象的不同数组进行散列可以为每个对象获得相同的散列值,javascript,node.js,json,hash,sha256,Javascript,Node.js,Json,Hash,Sha256,我试图散列JSON对象数组,但由于某种原因,生成的hasd在某些情况下不会改变 使用sha256哈希算法包在nodejs中测试了这些示例 arr1 = [{a: 1}]; sha(arr1); '6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d' arr2 = [{a: 1, b:2}] sha(arr2); '6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511

我试图散列JSON对象数组,但由于某种原因,生成的hasd在某些情况下不会改变

使用sha256哈希算法包在nodejs中测试了这些示例

arr1 = [{a: 1}];
sha(arr1);
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d'

arr2 = [{a: 1, b:2}]
sha(arr2);
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d'

arr3 = [{a: 1111111111111}];
sha(arr3);
'6e340b9cffb37a989ca544e6bb780a2c78901d3fb33738768511a30617afa01d'
正如您所看到的,所有数组都具有相同的哈希生成值,即使它们具有不同的属性

arr4 = [{a: 1}, {b: 2}];
sha(arr4);
'96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7'
这一个有不同的散列,因为它有两个对象,而不是只有一个

因此,如果我需要对前三个数组进行不同的哈希,我的问题是要了解前三个数组的错误所在。

您的
sha()
方法可能需要一个字符串,因此会将您的对象类型转换为字符串:

arr1=[{a:1}];
民政事务局局长(1);
arr2=[{a:1,b:2}]
民政事务局局长(2);
arr3=[{a:1111}];
民政事务局局长(arr3);
arr4=[{a:1},{b:2}];
民政事务局局长(arr4);
民政事务局局长(五){
log(v.toString());
}
您的
sha()
方法可能需要一个字符串,因此会将您的对象类型转换为字符串:

arr1=[{a:1}];
民政事务局局长(1);
arr2=[{a:1,b:2}]
民政事务局局长(2);
arr3=[{a:1111}];
民政事务局局长(arr3);
arr4=[{a:1},{b:2}];
民政事务局局长(arr4);
民政事务局局长(五){
log(v.toString());

}
了解哪个包(或内部)提供了sha功能会很有帮助。我打赌它实际上只是在执行sha(“[object object]”)或任何对象的通用字符串表示形式。比如,在散列之前,您可能应该将对象转换为json。了解提供sha函数的包(或内部包)会很有帮助。我打赌它实际上只是在执行sha(“[object object]”)或任何对象的通用字符串表示形式。比如,在散列之前,您应该将对象转换为json。