node-argon2
到引用的绑定 Argon2 实现。
使用
可以使用Argon2i, Argon2d或Argon2id(默认)进行散列 验证密码是否与散列匹配。
散列密码:
const argon2 = require("argon2");
try {
const hash = await argon2.hash("password");
} catch (err) {
//...
}
验证密码:
try {
if (await argon2.verify("<big long hash>", "password")) {
// password match
} else {
// password did not match
}
} catch (err) {
// internal failure
}
[!请注意) 默认为argon2。hash将根据开发Argon2的团队的安全建议生成安全的哈希。 对于密码散列,不需要修改它们。
查看如何修改输出(散列长度、编码)和参数 (时间成本,内存成本和并行性), 阅读维基百科
与节点比较:加密原生实现
原生API专注于Argon2散列函数的通用用法,而这个包历来专注于密码散列。
一旦所有支持的Node发行版都包含原生Argon2,并且旧版本正式发布,Node - Argon2将转换为最小包装器。它将提供最友好的开发人员界面,将用户连接到Node的本地加密方法。这避免了重复,并确保在本机支持普及后进行无缝升级。
| node-argon2 | 节点:加密argon2 | |
|---|---|---|
| 生成散列 | ✅ | ✅ |
| PHC字符串格式化 | ✅ | ❌ |
| 验证PHC字符串 | ✅ | ❌ |
| 检查是否需要重新散列 | ✅ | ❌ |
| 提供合理的默认参数 | ✅ | ❌ |
从另一个哈希函数迁移
看到 这篇文章在维基上 有关如何将现有代码迁移到Argon2的步骤。很容易!
使用打印稿
TypeScript类型声明文件是和这个模块一起发布的。如果你是 使用TypeScript 2.0.0或更高版本,这意味着你不需要安装任何 用于访问强类型接口的附加类型。 只需像上面提到的那样使用库即可。
import * as argon2 from "argon2";
const hash = await argon2.hash(..);
预先构建的二进制文件
node-argon2 提供预构建的二进制文件 v0.26.0 起。他们是
使用GitHub Actions构建每个版本。
当前预构建的二进制文件是用以下系统构建和测试的:
- Ubuntu 22.04 (x86-64; ARM64从v0.28.2; ARMv7从v0.43.0)
- MacOS 13 (x86-64)
- MacOS 14 (ARM64从v0.29.0起)
- Windows Server 2022 (x86-64)
- Alpine Linux 3.18(从v0.28.1开始的x86-64;从v0.28.2开始的ARM64;从v0.43.0开始的ARMv7)
- FreeBSD 14 (x86-64从v0.29.1; ARM64从v0.44.0)
二进制文件也应该适用于比列出的版本更新的任何版本 以上。例如,Ubuntu 20.04的二进制文件也可以在Ubuntu 22.04上运行,或者 任何其他带有新版本glibc的Linux系统;二进制的 MacOS 11也可以在MacOS 12上运行。如果你的平台在上面的下面 要求,可以按照 在安装之前 节从源代码手动编译。它也总是被推荐 从源代码构建以确保编译模块的一致性。
在安装之前
您可以跳过本节,如果 预先构建的二进制文件 为你工作。
你 必须 有一个 node-gyp 在继续安装之前进行全局安装, GCC >= 5 / Clang >= 3.3在Windows上,必须在Visual下编译 Studio 2015或更新版本。
node-argon2 仅适用于节点>=22.0.0。
OSX
要在OSX上安装GCC >= 5,使用 家酿:
$ brew install gcc
一旦安装了GCC并准备运行,就需要进行安装 Node-gyp,你必须全局这么做:
$ npm install -g node-gyp
最后,一旦安装了node-gyp并准备好了,就可以安装它了 库,指定要使用的GCC或Clang二进制文件:
$ CXX=g++-12 npm install argon2
请注意:如果您的GCC或Clang二进制文件的命名与 g++-12,
您需要在命令中指定它。
常见问题解答
如何手动重新构建二进制文件?
$ npx @mapbox/node-pre-gyp rebuild -C ./node_modules/argon2
运行 @mapbox/node-pre-gyp 而不是 node-gyp 因为node-argon2
binding.gyp 文件依赖于的变量 @mapbox/node-pre-gyp.
你可以省略 npx @mapbox 然后用 node-pre-gyp 如果你有一个全局
安装 @mapbox/node-pre-gyp,否则为前缀 npx 将使用
本地的 ./node_modules/.bin
如何跳过安装预构建的二进制文件并从源代码手动编译?
您可以使用以下两种方法中的任何一种:
- 在安装时强制从源代码构建。
$ npm install argon2 --build-from-source
- 忽略
node-argon2手动安装脚本并构建。
$ npm install argon2 --ignore-scripts
$ npx node-gyp rebuild -C ./node_modules/argon2
我将Node安装为 提前,我不能安装node-argon2。
这似乎是一个与snap相关的问题(参见 # 345(评论)). 使用另一个包管理器安装Node,例如 asdf 或者 nvm,是一种可能的变通方法。
贡献者
代码贡献者
这个项目的存在要感谢所有做出贡献的人。[贡献]。
金融的贡献者
成为一个财务贡献者,帮助我们维持我们的社区。[贡献]
个人
组织
与您的组织一起支持这个项目。您的标志将显示在这里与链接到您的网站。[贡献]
许可证
根据 MIT许可证. 请检查 P-H-C / phc-winner-argon2 用于 Argon2的许可证和参考实现。