Nodejs 加密模块与 crypto-js

2024-01-10

我对 NodeJs 很陌生,并试图弄清楚如何使用“加密”模块。在使用它时,我注意到 NodeJs 和 crypto-js 中的“crypto”模块之间的区别:

使用 crypto-js,我有:

function SHA256Hash(password, salt, iteration) {
    var saltedpassword = salt + password;
    var sha256 = CryptoJS.algo.SHA256.create();
    for(var i = 0; i < iteration; i++) {
            alert("saltedpassword = " + saltedpassword);
            sha256.update(saltedpassword);
            var saltedpassword = sha256.finalize();
            sha256.reset();
    }       
    return saltedpassword.toString(CryptoJS.enc.Base64);
}

然后致电:

var hashedPassword = SHA256Hash("123456789", "ASIN", 3)

并收到:

saltedpassword = ASIN123456789
saltedpassword = 3362d80b757d14bfe18c01f6a003ed38a3a4a3dcab0417efb457b71740e21411
saltedpassword = 6020c992a9b7cd3ca9e95b9a3e21b64911edb7983b3dd77bdcecda19f2756987

使用“加密”模块,我写道:

function SHA256Hash(password, salt, iteration) {
    var saltedpassword = salt + password;
    for(var i = 0; i < iteration-1; i++) { 
            console.log("saltedpassword = "+saltedpassword)
            var sha256 = crypto.createHash('sha256');
            sha256.update(saltedpassword);
            var saltedpassword = sha256.digest('hex');
    }       
    console.log("saltedpassword = "+saltedpassword)
    var sha256 = crypto.createHash('sha256');
    sha256.update(saltedpassword);
    return sha256.digest('base64');
}

然后调用:

var hashedPassword = SHA256Hash("123456789", "ASIN", 3);

并收到:

saltedpassword = ASIN123456789
saltedpassword = 3362d80b757d14bfe18c01f6a003ed38a3a4a3dcab0417efb457b71740e21411
saltedpassword = 4795d40ae8ae797f0ce51dfe4b496bca68f6d1f4a264f4ca52348ddd65a2988d

前两项相同,但第三项不同。我错过了什么吗?

Edited:与 Jasypt 相比,CryptoJs 生成类似的密钥。我的问题是如何调整“crypto”模块以使其生成与 CryptoJS 和 Jasypt 相同的密钥。


显然我无法在 Freakish 的答案中添加评论,所以我将其写在这里:

Reset() 工作正常。显着的区别是您在迭代循环中将哈希输出转换为十六进制字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs 加密模块与 crypto-js 的相关文章

  • netstat 中未显示正在使用的端口,但尝试使用该端口被 Windows 拒绝

    我已经找到了这个问题的答案 只是想记录我的发现 在我最近的一个项目中 我发现某个端口不会在 netstat 中显示为正在使用 但是当我的项目尝试使用该端口时 会抛出错误 例如 假设我想使用端口 53000 netstat ano finds
  • JavaScript;使用画布在图像上添加文本并保存到图像

    我只想制作一个页面 您可以在其中输入文本并将其添加到所选图像上并将其另存为新图像 我尝试了几种方法 但没有运气
  • JavaScript 等待函数响应

    我有以下代码 myFunc bar myFunc 正在发出 ajax 请求 在 myFunc 的请求完成之前 我不想执行 bar 我也不想将对 bar 的调用移至 myFunc 内部 可能的 EDIT 这是我最终得到的代码 var FOO
  • 通过 Javascript 不断查询服务器 - 好主意吗?

    我有一个小型网站 大约有 5 到 10 名管理员 我已将其设置为监视每个管理员正在执行的操作 添加项目 删除项目等 我的管理面板中有一个列表 显示了集体管理部门之前执行的 10 项活动 今天 我决定每 30 秒进行一次自我更新 我的问题很简
  • 在原始文件之后插入克隆文件

    我试图在原始元素之后放置一个克隆元素 我做了一些研究 发现了如何创建克隆以及如何将克隆放置在原始副本之后 但我似乎无法将它们放在一起 这是我的代码
  • 为什么我不能在 Javascript 中滚动循环?

    我正在开发一个使用 dojo 的网页 并且上面有许多 在我的测试用例中为 6 但通常是可变的 项目小部件 我正在调用 dojo addOnLoad init 并且在 init 函数中我有以下几行 dojo connect dijit byI
  • 当函数定义为无参数时,为什么我可以调用带参数的函数?

    再会 我偶然发现了一些我在 JavaScript 领域从未见过的东西 但我想对于更了解该语言的人来说这是很容易解释的 下面我有以下函数 代码取自书籍 JavaScript Ninja 的秘密 function log try console
  • NestJS:使用 JWT 将验证选项添加到 AuthGuard

    我正在尝试利用AuthGuard装饰器和护照 JWT 策略 遵循文档 https docs nestjs com techniques authentication 文档中的所有内容都运行良好 但我现在想保护 JWT 中包含的范围的路由 这
  • NodeJS 中的 uglify-js“找不到模块”

    在这里我正在创建应用程序来压缩 javascript 文件 我所做的步骤 在我的本地机器上安装了nodeJS 检查节点和 npm 正在工作 通过 npm install uglify js g 安装 uglify js 并安装 当我尝试在命
  • Node.js 和 .net 之间的命名管道通信

    我正在研究 net v4 5 2 和 Javascript node js v8 9 0 应用程序之间的进程间通信 我想为此使用 Windows 命名管道 并且仅限命名管道 对于 Javascript 应用程序 我使用的是命名管道包 v0
  • jQuery 上下文菜单下拉菜单

    我正在使用这个 contextMenu 模板 http medialize github com jQuery contextMenu index html http medialize github com jQuery contextM
  • Electron 包 - 如何写入/读取文件

    我有文件test txt在我的应用程序根目录中 当我使用命令运行我的应用程序时npm start 我可以毫无问题地写入我的文件 但是当我使用电子打包器制作包时 不再可能将文本写入我的文件 我收到错误 Error EACCES permiss
  • 如何获取 Node 工作队列中的回调列表? (或者,为什么 Node 不退出?)

    它说在Node js 关于页面 http nodejs org about 当没有更多回调要执行时 节点退出事件循环 有没有办法找出哪些回调阻止 Node 退出 您可以使用process getActiveHandles and proce
  • 将复杂对象传递给 ui-sref 参数

    我需要这样的构建网址 列表 过滤器 状态 1 过滤器 类型 2 I do link a List a 在参数中传递复杂对象 如果传递简单对象 filter 1 可以 但我需要这个 state state list url list filt
  • 当直接调用函数时,React 如何/为什么知道函数组件内没有调用钩子?

    出于好奇 我想call直接一个React函数组件 就像常规函数一样 然而 React 抱怨道 Invalid hook call Hooks can only be called inside of the body of a functi
  • 如何在 i18next 中使用多个命名空间?

    我刚刚启动 i18next 我想为项目中的每个模块创建翻译文件 看起来使用命名空间是执行此操作的正确方法 该项目可以使用多个视图创建页面布局 因此我需要能够同时翻译多个命名空间中的字符串 我创建了一个具有两个命名空间的简单示例 但我只能使用
  • 如何在猫鼬中使用聚合

    如何在 mongoose 中定义以下 MongoDB 聚合查询 db contacts aggregate group id code Code name Name 查询的目的是获取不同代码和名称的列表 我当前的模型代码是 use stri
  • pm2 start app.js 在 15 次重启后退出

    npm start 会很好地启动我的应用程序 但是当我这样做时 pm2 start app js I get PM2 Spawning PM2 daemon PM2 PM2 Successfully daemonized PM2 Proce
  • 使用 javascript 将子元素添加到父元素

    我正在尝试添加一个子元素 to a 父元素如下 li要添加到ul 单击 Enter 按钮或按下键盘上的 Enter 键时 会生成一个新的li and delete按钮应该添加到ul 我的代码无法正常工作 有人可以帮我解决这个问题吗 HTML
  • 如何在 Javascript 中检测网络丢失?

    我的 Web 应用程序适用于多种手持设备 例如 iPad Galaxy 选项卡等 应用程序从服务器请求图像并在客户端上呈现 现在的问题有时会发生 在图像渲染过程中网络连接会丢失 而不是在设备上显示 html 无图像图标时 我想优雅地处理这种

随机推荐