【node】【错误记录】crypto密码加密报错 [ERR_CRYPTO_HASH_FINALIZED]: Digest already called

博客讲述了在Node.js中使用Crypto模块进行密码加密时遇到的错误【ERR_CRYPTO_HASH_FINALIZED】,该错误由于尝试在已执行过`digest()`的Hash实例上再次调用`update()`导致。解决方案是确保每次加密操作都使用新的Hash实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误记录:
调用密码加密方法,报错

const md5 = crypto.createHash('md5');
const salt = 'hhug6dcKyCNBQ5sUC0i6hja5dCTqdSzV';
function encrypt(str: string) {
    return md5.update(str + salt).digest('hex');
}

原因:Hash实例 不能复用
规则:hash实例调用digest之后不能再调用update
本例中md5放在了函数外,多次调用使用的是同一个变量。第二次调用时,违背了规则。

正确写法:

const salt = 'hhug6dcKyCNBQ5sUC0i6hja5dCTqdSzV';
function encrypt(str: string) {
const md5 = crypto.createHash('md5');
    return md5.update(str + salt).digest('hex');
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值