You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js连续三次哈希(SHA256/SHA384/SHA512)代码正确性咨询

代码问题分析与修正

你的代码存在两个核心问题需要调整:

  1. 缺少crypto模块的引入
    Node.js的crypto模块并非全局可用,必须通过require显式引入,否则运行时会抛出ReferenceError: crypto is not defined错误。

  2. 哈希输入的编码逻辑需匹配需求
    你的代码中,每次哈希后用digest("hex")生成十六进制字符串,下一次哈希时以hex编码解析该字符串——这相当于将前一次哈希的原始二进制结果作为下一次哈希的输入,这个逻辑本身是成立的,但前提是你的需求确实是基于二进制哈希值继续运算。
    如果你的需求是把前一次的十六进制字符串当作普通UTF-8文本进行哈希,则需要将update的第二个参数改为"utf-8"。

修正后的完整代码

基于二进制哈希值继续哈希的版本(匹配你当前代码的逻辑)

const crypto = require('crypto'); // 必须添加该引入语句

function findHash(password) {
  const hash_256 = crypto.createHash("sha256").update(password, "utf-8").digest("hex");
  const hash_384 = crypto.createHash("sha384").update(hash_256, "hex").digest("hex");
  return crypto.createHash("sha512").update(hash_384, "hex").digest("hex");
}

基于十六进制字符串文本哈希的版本

const crypto = require('crypto');

function findHash(password) {
  const hash_256 = crypto.createHash("sha256").update(password, "utf-8").digest("hex");
  const hash_384 = crypto.createHash("sha384").update(hash_256, "utf-8").digest("hex");
  return crypto.createHash("sha512").update(hash_384, "utf-8").digest("hex");
}

你可以根据实际需求选择对应版本,确保引入crypto模块是代码正常运行的必要前提。

内容的提问来源于stack exchange,提问作者user13019610

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:00:17