我正在使用 node.js 的加密模块来生成一个 SHA256 哈希,如下所示:
const key = crypto.createHmac('sha256', data).digest('hex');
现在,tweetnacl抛出错误:bad key size
当密钥传入时secretbox
:
nacl.secretbox(data, Rnonc, key);
参数被转换为 Uint8Array,因为secretbox
要求参数是 Uint8Array。
错误:是从这里bad key size
抛出的,因为这里定义为。问题是返回的密钥不是 32 字节大小。tweetnacl
crypto_secretbox_KEYBYTES
32
crypto
我已经搜索了 SO 和相关网站,但找不到任何可行的解决方案,但据此-转换为十六进制的 SHA256 哈希产生:
32 个单独的十六进制数(或 32 个字节)
如何使用 node.js 生成 32 字节的 SHA256 密钥以避免此错误?在生成 SHA256 哈希时我做错了什么吗?