将对象加密为 JSON 格式效果不佳
encrypt object as JSON format not working well
我尝试用密码加密数据(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);
}
日志:
{
"aaa": "aaa",
"bbb": "bbb"
}
820c9d3d82a9a8fc1cc0352929ccccdfd945c5d0
当我从日志中复制数据并将其粘贴到 this site 时,我得到了另一个签名:
怎么了?
如果删除所有换行符和空格:
{"aaa":"aaa","bbb":"bbb"}
该网站将计算哈希值:
61b23e04f44fd7dcfcfe9acf5fcb9381179538f7
这与将第三个参数设置为 0 时在程序中得到的结果相同。
let jsonData = JSON.stringify(data, null, 0);
所以问题是哈希函数的不同输入。
发现问题了,一加:
.replace (/\n/ g, '\r\n')
它运行良好。
固定代码如下:
function encrypt(data) {
let hmac = crypto.createHmac('sha1', 'abc');
console.log(data);
hmac.update(data.replace(/\n/g, '\r\n'));
let key = hmac.digest('hex');
console.log(key);
console.log("#################################################");
}
我尝试用密码加密数据(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);
}
日志:
{
"aaa": "aaa",
"bbb": "bbb"
}
820c9d3d82a9a8fc1cc0352929ccccdfd945c5d0
当我从日志中复制数据并将其粘贴到 this site 时,我得到了另一个签名:
怎么了?
如果删除所有换行符和空格:
{"aaa":"aaa","bbb":"bbb"}
该网站将计算哈希值:
61b23e04f44fd7dcfcfe9acf5fcb9381179538f7
这与将第三个参数设置为 0 时在程序中得到的结果相同。
let jsonData = JSON.stringify(data, null, 0);
所以问题是哈希函数的不同输入。
发现问题了,一加:
.replace (/\n/ g, '\r\n')
它运行良好。
固定代码如下:
function encrypt(data) {
let hmac = crypto.createHmac('sha1', 'abc');
console.log(data);
hmac.update(data.replace(/\n/g, '\r\n'));
let key = hmac.digest('hex');
console.log(key);
console.log("#################################################");
}