postman之接口参数签名(js接口HMAC-SHA256签名)
warning:
这篇文章距离上次修改已过296天,其中的内容可能已经有所变动。
// 假设有一个函数用于生成时间戳
function getTimestamp() {
return Math.floor(Date.now() / 1000).toString();
}
// 假设有一个函数用于生成随机数
function getNonce() {
return Math.random().toString(36).substring(2, 15);
}
// 签名函数
function signRequest(params, secretKey) {
// 参数按key正序排序
const sortedParams = Object.keys(params).sort().reduce((obj, key) => {
obj[key] = params[key];
return obj;
}, {});
// 拼接请求字符串
const stringToSign = sortedParams.access_key + sortedParams.nonce + sortedParams.timestamp + sortedParams.body;
// 使用HMAC-SHA256进行签名
const hmac = crypto.createHmac('sha256', secretKey);
hmac.update(stringToSign);
const signature = hmac.digest('hex');
// 将签名添加到请求参数中
sortedParams.sign = signature;
return sortedParams;
}
// 使用示例
const secretKey = 'your_secret_key';
const accessKey = 'your_access_key';
const body = '{"key1":"value1","key2":"value2"}'; // 请求body的json字符串
const params = {
'access_key': accessKey,
'timestamp': getTimestamp(),
'nonce': getNonce(),
'body': body
};
const signedParams = signRequest(params, secretKey);
// 输出签名后的参数
console.log(signedParams);
这段代码展示了如何在Node.js环境中使用crypto
模块来生成时间戳和随机数,并且如何对请求参数进行HMAC-SHA256签名。这是一个简化的例子,实际应用中可能需要更多的参数和复杂性。
评论已关闭