crypto 中 HMAC 对象的基本用法(消息验证)
HMAC (Hash-based Message Authentication Code) 是一种基于散列函数的消息认证码。它使用密钥与消息数据生成签名,可用于验证消息的完整性和发送者的身份。
HMAC 对象通常在代码中的使用流程如下:
创建
HMAC
对象:通过使用crypto.createHmac()
方法创建一个HMAC
对象。需要指定散列算法和密钥:const hmac = crypto.createHmac('sha256', secretKey);
更新消息:通过使用
hmac.update()
方法更新消息:hmac.update(message);
计算签名:通过使用
hmac.digest()
方法计算签名:const signature = hmac.digest('hex');
注意,在计算签名之前,必须先使用
hmac.update()
方法更新消息,否则签名将不正确。 另外,update() 方法只可调用一次,多次调用也会抛出错误。签名主要在之后用来验证消息的完整性或者验证发送者的身份。
通常其基本的流程如下:
- 发送方将消息和签名一起发送给接收方。
- 接收方使用相同的密钥和散列算法计算消息的签名,并与发送方发送的签名进行比较。
- 如果两个签名匹配,说明消息是完整的且来自可信的发送方。
- 如果两个签名不匹配,说明消息已被篡改或来自不可信的发送方。
这样,使用 HMAC 可以确保数据在传输过程中的完整性和发送者的身份。