我尝试使用加密来加密数据(json格式),
这是我的代码:
const crypto = require('crypto');
let data = {
aaa: "aaa",
bbb: "bbb"};
let jsonData = JSON.stringify(data, null, 2);
encrypt(jsonData);
function encrypt(data) {
let hmac = crypto.createHmac('sha1', 'abc');
console.log(data);
hmac.update(data);
let key = hmac.digest('hex');
console.log(key);
}
log:
{
"aaa": "aaa",
"bbb": "bbb"
}
820c9d3d82a9a8fc1cc0352929ccccdfd945c5d0
[当我从日志中复制数据并将其粘贴到this site时,我得到了另一个签名:
怎么了?
如果删除所有换行符和空格:
{"aaa":"aaa","bbb":"bbb"}
该网站将计算以下项的哈希:
61b23e04f44fd7dcfcfe9acf5fcb9381179538f7
与将第三个参数设置为0时在程序中得到的结果相同。
let jsonData = JSON.stringify(data, null, 0);
所以问题是哈希函数的输入不同。