рассмотрим этот буфер, декодированный base64
const base64decoded = Buffer.from('key', 'base64')
Теперь два дайджеста ниже будут другими:
crypto.createHmac('sha512', base64decoded)
.update('test')
.digest('base64')
// -> QkooamNoTPVTrhrrxkU5r2vnFU3e7DMSJaukjAEugOiBYFnQyxHQDZvy6zMYesNHHyoG78cgW27K2m9+OPuQ6g==
crypto.createHmac('sha512', base64decoded.toString())
.update('test')
.digest('base64')
// -> zLSdI2dO7o84v41Z5vbxUUyu6FQSTzWOS3OHf7/iijHZUecDKyFeDGzB3Ei22cO9Zcr8a9AiiRiDiBVb0e+kmw==
Это действительно смущает меня, я ожидал того же результата. Как Buffer
используется в createHmac
для выдачи другого выхода?
И как мне изменить мою вторую функцию, чтобы она давала такой же вывод, как и первая? Я пытаюсь сделать порт браузера для пакета узла, который использует createHmac
, все работало хорошо, но window.crypto.subtle.sign
(HMAC) также дает другой вывод, потому что я не могу понять, как использовать буфер.