Node.js HMAC-SHA256 签名认证
Node.js HMAC About 914 words需求
对于WebHook,对外提供的API,均需要验证请求方的真实性。
方法
IP白名单- 签名认证
HMAC-SHA256MD5(简易版)
HMAC-SHA256
64位长度的字符串(只有26个字母的大小写和0-9的数字组成),可以先做长度和字符的正则匹配。
if(!/^[a-fA-F0-9]{64}$/.test(signature)) {
console.log(`Invalid Sign Length. ${signature}`);
return false;
}
服务端
import crypto from "crypto";
const HMAC_SECRET: string = process.env.HMAC_SECRET!;
function verify(payload: string, signature: string) {
const expected = crypto
.createHmac("sha256", HMAC_SECRET)
.update(payload)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(signature, "hex"),
Buffer.from(expected, "hex")
);
}
客户端
import {createHmac} from "crypto";
const HMAC_SECRET: string = process.env.HMAC_SECRET!;
function sign(msg: string) {
const signature = createHmac("sha256", HMAC_SECRET)
.update(msg, "utf8")
.digest("hex");
}
说明
可以添加一些其他的字段参与计算,如:时间戳、User-Agent、IP等。
Views: 11 · Posted: 2026-06-10
———         Thanks for Reading         ———
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...