gpt4 book ai didi

node.js - Node 加密 HMAC 返回 而不是 String

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:19 24 4
gpt4 key购买 nike

我正在使用标准 Node crypto用于生成 HMAC MD5 哈希的库。

当我尝试读取哈希值时,返回的对象是 <SlowBuffer>而不是预期的 String .

下面是一个简化的示例,但它给出了相同的结果:

var crypto = require('crypto');
var hmac = crypto.createHmac('md5', 'KEY');

hmac.write('something');
hmac.end();

var hash = hmac.read();

console.log(hash);

//Outputs: <SlowBuffer 4c ec c5 6e 46 90 23 7a f1 2e 5a 78 35 21 6a 7a>

是什么导致哈希类型被强制为 SlowBuffer类型?如何避免这种强制,或者至少从缓冲区读取原始值?

如果我通过 hmac.setEncoding() 设置哈希的编码值它只是对值 <SlowBuffer 4c ec c5 6e 46 90 23 7a f1 2e 5a 78 35 21 6a 7a> 进行编码作为给定格式的字符串。我尝试调用toString('encoding')也是如此。在缓冲区本身。

最佳答案

阅读 crypto docs 后更仔细地说,这似乎实际上是预期的:

If no encoding is provided, then a buffer is returned.

由于 digest() 方法已被弃用,取而代之的是 read() 我跳过了这一点,并假设如果未指定任何编码,则将使用默认编码.

解决方案很简单:hmac.setEncoding('hex')

关于node.js - Node 加密 HMAC 返回 <SlowBuffer> 而不是 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23659348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com