【发布时间】:2019-03-17 05:00:39
【问题描述】:
我正在尝试散列 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 功能会很有帮助
-
我敢打赌它实际上只是在做 sha('[object object]') 或任何对象的通用字符串表示。就像也许你应该在散列之前把你的对象变成 json。
标签: javascript node.js json hash sha256