argon2

中文文档
0.45.2发布于 2026/11/03MITTypeScriptCommonJS构建来源已验证

用于Node的Argon2库

中文使用文档
文档目录12 节
  1. 使用
  2. 与节点比较:加密原生实现
  3. 从另一个哈希函数迁移
  4. 使用打印稿
  5. 预先构建的二进制文件
  6. 在安装之前
  7. OSX
  8. 常见问题解答
  9. 贡献者
  10. 代码贡献者
  11. 金融的贡献者
  12. 许可证

node-argon2

Financial contributors on Open Collective Build status NPM package

到引用的绑定 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

如何跳过安装预构建的二进制文件并从源代码手动编译?

您可以使用以下两种方法中的任何一种:

  1. 在安装时强制从源代码构建。
$ npm install argon2 --build-from-source
  1. 忽略 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的许可证和参考实现。

版本与发布记录

argon2 共发布 86 个版本,首次发布于 2015/12/19;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.45.2latest2026/11/03今天
0.45.12026/07/223 个月前
0.45.02026/07/193 个月前
1.0.0-alpha.1next2026/07/183 个月前
0.44.02025/08/111.2 年前
0.43.12025/07/151.3 年前

其他发布通道:true → 0.40.2,next → 1.0.0-alpha.1。

关于 argon2 的常见问题

argon2 是什么?

用于Node的Argon2库

如何安装 argon2?

在项目目录运行 npm install argon2,或使用 pnpm add / yarn add / bun add。

argon2 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

argon2 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

argon2 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.17.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

argon2 可以商用吗?

argon2 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

argon2 还在维护吗?

最新版本 0.45.2 发布于 2026/11/03(今天);至今共发布 86 个版本,其中过去 12 个月发布了 4 个;首次发布于 2015/12/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。