如何在 NODE.JS 上模拟 php crypt()

bbb*_*oon 5 javascript php encryption des node.js

请帮助 php -> javascript(node.js) 转换

$key = crypt($key, $salt);
Run Code Online (Sandbox Code Playgroud)

我正在用 node.js 重写 php 脚本,但我在 php 中遇到了哈希签名生成问题,该签名是使用 crypt() 函数与盐匹配“CRYPT_EXT_DES”模式生成的

CRYPT_EXT_DES - 扩展的基于 DES 的哈希。“salt”是一个 9 个字符的字符串,由下划线后跟 4 个字节的迭代计数和 4 个字节的 salt 组成。这些被编码为可打印字符,每个字符 6 位,最低有效字符在前。值 0 到 63 编码为“./0-9A-Za-z”。在 salt 中使用无效字符将导致 crypt() 失败。

我对加密并没有真正的经验,并且研究有关 crypto 模块的 Node.js 文档也没有帮助。请帮助如何在node.js上实现这个!

小智 1

看起来crypt(3)库应该可以工作。

例如:

const crypt = require( 'crypt3/sync' ),
      key = "password",
      hash = crypt( key, crypt.createSalt( 'sha512' ) );
Run Code Online (Sandbox Code Playgroud)

然后测试存储的哈希...

const crypt = require( 'crypt3/sync' ),
      key = "password",
      hash = /* stored hash */;

if ( crypt( key, hash ) !== hash ) {
  // access denied
  return false;
}
Run Code Online (Sandbox Code Playgroud)

(晚了六年,我知道)