​crypto​ 中 HMAC​ 对象的基本用法(消息验证)

  • HMAC (Hash-based Message Authentication Code) 是一种基于散列函数的消息认证码。它使用密钥与消息数据生成签名,可用于验证消息的完整性和发送者的身份。

  • HMAC 对象通常在代码中的使用流程如下:

    1. 创建 HMAC​ 对象:通过使用 crypto.createHmac()​​ 方法创建一个 HMAC​ 对象。需要指定散列算法和密钥:

      const hmac = crypto.createHmac('sha256', secretKey);
      
    2. 更新消息:通过使用 hmac.update()​ 方法更新消息:

      hmac.update(message);
      
    3. 计算签名:通过使用 hmac.digest()​ 方法计算签名:

      const signature = hmac.digest('hex');
      

    注意,在计算签名之前,必须先使用 hmac.update()​ 方法更新消息,否则签名将不正确。 另外,update() 方法只可调用一次,多次调用也会抛出错误。

  • 签名主要在之后用来验证消息的完整性或者验证发送者的身份。

  • 通常其基本的流程如下:

    1. 发送方将消息和签名一起发送给接收方。
    2. 接收方使用相同的密钥和散列算法计算消息的签名,并与发送方发送的签名进行比较。
    3. 如果两个签名匹配,说明消息是完整的且来自可信的发送方。
    4. 如果两个签名不匹配,说明消息已被篡改或来自不可信的发送方。
  • 这样,使用 HMAC 可以确保数据在传输过程中的完整性和发送者的身份。