Hướng dẫn nodejs hmac verify - xác minh nodejs hmac

Tôi có thể tạo thành công một HMAC thông qua NodeJS bằng cách sử dụng mã sau: (ví dụ thay đổi một chút từ: https://nodejs.org/api/crypto.html#cryptoCreatehmacalgorithm-key-opes)

Crypto.createHmac('sha256', Crypto.randomBytes(16))
   .update('I love cupcakes')
   .digest('hex');

Điều đó dẫn đến một giá trị như sau (Chữ ký HMAC dựa trên HEX):

fb2937ca821264812d511d68ae06a643915931375633173ba64af9425f2ffd53

Làm cách nào để sử dụng chữ ký đó để xác minh rằng dữ liệu không bị thay đổi? (sử dụng nodejs, tất nhiên).

Giả định của tôi

Tôi giả sử có một cuộc gọi phương thức trong đó bạn cung cấp dữ liệu và chữ ký và bạn nhận được một boolean cho bạn biết liệu dữ liệu có bị thay đổi hay không - hoặc một cái gì đó tương tự.

Giải pháp khác?

Ồ, chờ đã, khi tôi viết rằng tôi bắt đầu nghĩ ...

Tôi có cần lưu trữ các byte ngẫu nhiên ban đầu mà tôi đã tạo (crypto.randombytes (16)) và chuyển chúng cho máy thu để chúng có thể tạo lại HMAC và xác minh rằng kết quả là như nhau (fb2937ca821264812d511d68ae06a643915931375633173ba64af9425f2ffd53) không?

Nếu điều đó đúng thì điều đó sẽ kỳ lạ, bởi vì tham số cho crypto.randombytes (16) được đặt tên là bí mật (trong ví dụ chính thức)*. Có vẻ như đó cần phải được giữ bí mật ??

Xin vui lòng cho tôi biết nếu có một cách để xác minh chữ ký ở phía nhận và cách tôi làm điều đó.

Tài liệu chính thức: Một chút khó hiểu

Đây là chức năng như được định nghĩa trong các tài liệu chính thức: crypto.createHmac(algorithm, key[, options])

Trong định nghĩa chức năng, bạn có thể thấy tham số thứ hai được đặt tên là key.

Tuy nhiên, trong ví dụ họ gọi nó là secret

const secret = 'abcdefg';
const hash = crypto.createHmac('sha256', secret)
               .update('I love cupcakes')
               .digest('hex');
console.log(hash);

1.3.4 & nbsp; • & nbsp; public & nbsp; • & nbsp; xuất bản 6 tháng trướcPublic • Published 6 months ago

  • Readme
  • Khám phá BetaBETA
  • 0 phụ thuộc
  • 1 người phụ thuộc
  • 6 phiên bản

Xác minh-hmac-sha

Hướng dẫn nodejs hmac verify - xác minh nodejs hmac

Gói đơn giản để xác minh HMAC với chữ ký SHA-256. Nó chỉ sử dụng mô -đun Crypto Node.js gốc như bạn thấy trong tài liệu chính thức. Tôi bọc tất cả chúng để bạn có thể làm điều này với ít dòng mã hơn.

Cách sử dụng

Tại hầu hết thời gian bạn sẽ chỉ cần sử dụng phương thức verify() trả về đúng/sai

const verifyHmac256 = require('verify-hmac-sha')
const secret = 'test-secret'
const payload = JSON.stringify({ example: 123 })
const signature = '0076b0ee1c6ea46ec31c8076b40447097497ab311866dd207fa7708e7a2bcc43'
console.log(
  // do verifyHmac256.encodeInBase64.verify in case of Base64 digest
  // verifyHmac256.encodeIn('base64') also works. Just pass in the encoding you prefer
  // I believe in most cases you will use either encodeInHex or encodeInBase64
  verifyHmac256.encodeInHex.verify({
    signature,
    secret,
    payload
  })
) // true

1.3.4 & nbsp; • & nbsp; public & nbsp; • & nbsp; xuất bản 6 tháng trướcPublic • Published 6 months ago

  • Readme
  • Khám phá BetaBETA
  • 0 phụ thuộc
  • 1 người phụ thuộc
  • 6 phiên bản

Xác minh-hmac-sha

Gói đơn giản để xác minh HMAC với chữ ký SHA-256. Nó chỉ sử dụng mô -đun Crypto Node.js gốc như bạn thấy trong tài liệu chính thức. Tôi bọc tất cả chúng để bạn có thể làm điều này với ít dòng mã hơn.

Cách sử dụng

Tại hầu hết thời gian bạn sẽ chỉ cần sử dụng phương thức verify() trả về đúng/sai

const verifyHmac256 = require('verify-hmac-sha')
const secret = 'test-secret'
const payload = JSON.stringify({ example: 123 })
const signature = '0076b0ee1c6ea46ec31c8076b40447097497ab311866dd207fa7708e7a2bcc43'
console.log(
  // do verifyHmac256.encodeInBase64.verify in case of Base64 digest
  // verifyHmac256.encodeIn('base64') also works. Just pass in the encoding you prefer
  // I believe in most cases you will use either encodeInHex or encodeInBase64
  verifyHmac256.encodeInHex.verify({
    signature,
    secret,
    payload
  })
) // true