将加密 hmac 转换为 crypto-js hmac 字符串
Converting crypto hmac to crypto-js hmac string
我正在尝试执行转换秘密 hmac 字符串的过程,以允许我在 postman 中测试我的 api。 Postman 预装了 cryptojs。这是我在我的测试服务器上使用加密的过程:
const crypto = require('crypto');
const generateHmac = (privateKey, ts) => {
const hmac = crypto.createHmac('sha256', privateKey);
hmac.update(ts);
const signature = hmac.digest('hex');
return signature;
}
这与邮递员中使用 cryptojs 生成的字符串不匹配:
const createHmacString = (privateKey, ts) => {
const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
return hmac;
}
不确定我做错了什么。提前致谢!
好吧,终于弄明白了——crypto-js 不提供实际的字节,所以对所有内容进行编码是必要的:
const createHmacString = (privateKey, ts) => {
const key = CryptoJS.enc.Utf8.parse(privateKey)
const timestamp = CryptoJS.enc.Utf8.parse(ts)
const hmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(timestamp, key))
// const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
return hmac;
}
let ts = new Date().getTime();
const signature = createHmacString("your-private-key", ts);
我遇到了类似的问题。虽然与问题有点不同,因为在我自己的情况下,我正在构建的前端应用程序没有生成与后端相同的哈希签名 api。因此,我不得不使用以下方法
function hmacSha256Hex(secret : string, message : any) : string {
let hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret);
hmac.update(message);
return CryptoJS.enc.Hex.stringify(hmac.finalize());
}
我正在尝试执行转换秘密 hmac 字符串的过程,以允许我在 postman 中测试我的 api。 Postman 预装了 cryptojs。这是我在我的测试服务器上使用加密的过程:
const crypto = require('crypto');
const generateHmac = (privateKey, ts) => {
const hmac = crypto.createHmac('sha256', privateKey);
hmac.update(ts);
const signature = hmac.digest('hex');
return signature;
}
这与邮递员中使用 cryptojs 生成的字符串不匹配:
const createHmacString = (privateKey, ts) => {
const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
return hmac;
}
不确定我做错了什么。提前致谢!
好吧,终于弄明白了——crypto-js 不提供实际的字节,所以对所有内容进行编码是必要的:
const createHmacString = (privateKey, ts) => {
const key = CryptoJS.enc.Utf8.parse(privateKey)
const timestamp = CryptoJS.enc.Utf8.parse(ts)
const hmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(timestamp, key))
// const hmac = CryptoJS.HmacSHA256(ts, privateKey).toString(CryptoJS.enc.Hex)
return hmac;
}
let ts = new Date().getTime();
const signature = createHmacString("your-private-key", ts);
我遇到了类似的问题。虽然与问题有点不同,因为在我自己的情况下,我正在构建的前端应用程序没有生成与后端相同的哈希签名 api。因此,我不得不使用以下方法
function hmacSha256Hex(secret : string, message : any) : string {
let hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secret);
hmac.update(message);
return CryptoJS.enc.Hex.stringify(hmac.finalize());
}