JavaScript crypto-js / sha256始终返回相同的结果

问题描述 投票:0回答:1

Crypto-js / sha256总是返回相同的结果,即使尝试使用其他对象创建哈希也是如此。如何解决这个问题呢?谢谢

const sha256 = require('crypto-js/sha256')

const data1 = {
    data: 2,
    name: 'name 1'
}

const data2 = {
    name: 'name 2'
}

const a = sha256(data1).toString()
const b = sha256(data2).toString()

console.log(a) // 4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e
console.log(b) // 4ea5c508a6566e76240543f8feb06fd457777be39549c4016436afda65d2330e
javascript node.js sha256 cryptojs
1个回答
0
投票

首先,如果您查看方法sha256的参数,您会发现它仅接受字符串或WordArray(类型为CryptoJS.LibWordArray)。

因此,如果您传递一个字符串,它将被转换为WordArray(包含两个元素;单词和sigBytes,否则就假定为WordArray。

这里的问题是,当您传递对象作为参数(不是WordArray类型的对象)时,无论其内容如何,​​它将被转换为“ {单词:[],sigBytes:NaN}”,然后您将始终相同的结果。

因此,如果您想真正使用整个对象,则可以将其作为字符串传递:

const a = sha256(JSON.stringify(data1)).toString()
const b = sha256(JSON.stringify(data2)).toString()
© www.soinside.com 2019 - 2024. All rights reserved.