# argon2 中文文档

规范地址：https://npmcn.com/package/argon2/

版本：0\.45\.2
npm 元数据更新时间：2026-11-03T00:10:50.431Z
中文译文更新时间：2026-11-03T04:30:05.423Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/argon2
原文对照：https://npmcn.com/package/argon2/?lang=original
项目主页：https://github.com/ranisalt/node-argon2#readme
源码仓库：https://github.com/ranisalt/node-argon2

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：959 kB，35 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=16\.17\.0
- 运行依赖：4 个
- 首次发布：2015-12-19T13:22:29.336Z
- 最新版本发布：2026-11-03T00:10:50.140Z
- 已发布版本数：86（近 12 个月 4 个）

## 中文简介

用于Node的Argon2库

## 安装

```sh
npm install argon2
```

也可以使用：`pnpm add argon2`、`yarn add argon2`、`bun add argon2`

## README

# node-argon2

[![Financial contributors on Open Collective](https://img.shields.io/opencollective/all/node-argon2.svg?style=flat-square)](https://opencollective.com/node-argon2) [![Build status](https://img.shields.io/github/actions/workflow/status/ranisalt/node-argon2/ci.yml?branch=master&style=flat-square)](https://github.com/ranisalt/node-argon2/actions) [![NPM package](https://img.shields.io/npm/v/argon2.svg?style=flat-square)](https://www.npmjs.com/package/argon2)

到引用的绑定 [Argon2](https://github.com/P-H-C/phc-winner-argon2) 实现。

## 使用

可以使用Argon2i， Argon2d或Argon2id（默认）进行散列 验证密码是否与散列匹配。

散列密码：

```js
const argon2 = require("argon2");

try {
  const hash = await argon2.hash("password");
} catch (err) {
  //...
}
```

验证密码：

```js
try {
  if (await argon2.verify("<big long hash>", "password")) {
    // password match
  } else {
    // password did not match
  }
} catch (err) {
  // internal failure
}
```

> \[!请注意) 默认为argon2。hash将根据开发Argon2的团队的安全建议生成安全的哈希。 **对于密码散列，不需要修改它们。**

查看如何修改输出（散列长度、编码）和参数 （时间成本，内存成本和并行性）， [阅读维基百科](https://github.com/ranisalt/node-argon2/wiki/Options)

### 与节点比较：加密原生实现

原生API专注于Argon2散列函数的通用用法，而这个包历来专注于密码散列。

一旦所有支持的Node发行版都包含原生Argon2，并且旧版本正式发布，Node - Argon2将转换为最小包装器。它将提供最友好的开发人员界面，将用户连接到Node的本地加密方法。这避免了重复，并确保在本机支持普及后进行无缝升级。

|  | node-argon2 | 节点:加密argon2 |
| --- | --- | --- |
| 生成散列 | ✅ | ✅ |
| [PHC字符串格式化](https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md) | ✅ | ❌ |
| 验证PHC字符串 | ✅ | ❌ |
| 检查是否需要重新散列 | ✅ | ❌ |
| [提供合理的默认参数](https://github.com/ranisalt/node-argon2/issues/469#issuecomment-3452416217) | ✅ | ❌ |

### 从另一个哈希函数迁移

看到 [这篇文章在维基上](https://github.com/ranisalt/node-argon2/wiki/Migrating-from-another-hash-function) 有关如何将现有代码迁移到Argon2的步骤。很容易!

### 使用打印稿

TypeScript类型声明文件是和这个模块一起发布的。如果你是 使用TypeScript 2.0.0或更高版本，这意味着你不需要安装任何 用于访问强类型接口的附加类型。 只需像上面提到的那样使用库即可。

```ts
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上运行。如果你的平台在上面的下面 要求，可以按照 [在安装之前](https://npmcn.com/package/argon2/#readme-before-installing) 节从源代码手动编译。它也总是被推荐 从源代码构建以确保编译模块的一致性。

## 在安装之前

_您可以跳过本节，如果 [预先构建的二进制文件](https://npmcn.com/package/argon2/#readme-prebuilt-binaries) 为你工作。_

你 **必须** 有一个 **node-gyp** 在继续安装之前进行全局安装， GCC >= 5 / Clang >= 3.3在Windows上，必须在Visual下编译 Studio 2015或更新版本。

**node-argon2** 仅适用于节点>=22.0.0。

### OSX

要在OSX上安装GCC >= 5，使用 [家酿](http://brew.sh/)：

```console
$ brew install gcc
```

一旦安装了GCC并准备运行，就需要进行安装 Node-gyp，你必须全局这么做：

```console
$ npm install -g node-gyp
```

最后，一旦安装了node-gyp并准备好了，就可以安装它了 库，指定要使用的GCC或Clang二进制文件：

```console
$ CXX=g++-12 npm install argon2
```

**请注意**：如果您的GCC或Clang二进制文件的命名与 `g++-12`， 您需要在命令中指定它。

## 常见问题解答

如何手动重新构建二进制文件？

```bash
$ 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.  在安装时强制从源代码构建。

```bash
$ npm install argon2 --build-from-source
```

2.  忽略 `node-argon2` 手动安装脚本并构建。

```bash
$ npm install argon2 --ignore-scripts
$ npx node-gyp rebuild -C ./node_modules/argon2
```
我将Node安装为 [提前](https://snapcraft.io/node)，我不能安装node-argon2。

这似乎是一个与snap相关的问题(参见 [\# 345(评论)](https://github.com/ranisalt/node-argon2/issues/345#issuecomment-1164178674)）. 使用另一个包管理器安装Node，例如 [asdf](https://asdf-vm.com/) 或者 [nvm](https://github.com/nvm-sh/nvm)，是一种可能的变通方法。

## 贡献者

### 代码贡献者

这个项目的存在要感谢所有做出贡献的人。［[贡献](https://npmcn.com/package/argon2/CONTRIBUTING.md)\]。 [![](https://opencollective.com/node-argon2/contributors.svg?width=890&button=false)](https://github.com/ranisalt/node-argon2/graphs/contributors)

### 金融的贡献者

成为一个财务贡献者，帮助我们维持我们的社区。［[贡献](https://opencollective.com/node-argon2/contribute)］

#### 个人

[![](https://opencollective.com/node-argon2/individuals.svg?width=890)](https://opencollective.com/node-argon2)

#### 组织

与您的组织一起支持这个项目。您的标志将显示在这里与链接到您的网站。［[贡献](https://opencollective.com/node-argon2/contribute)］

[![](https://opencollective.com/node-argon2/organization/0/avatar.svg)](https://opencollective.com/node-argon2/organization/0/website) [![](https://opencollective.com/node-argon2/organization/1/avatar.svg)](https://opencollective.com/node-argon2/organization/1/website) [![](https://opencollective.com/node-argon2/organization/2/avatar.svg)](https://opencollective.com/node-argon2/organization/2/website) [![](https://opencollective.com/node-argon2/organization/3/avatar.svg)](https://opencollective.com/node-argon2/organization/3/website) [![](https://opencollective.com/node-argon2/organization/4/avatar.svg)](https://opencollective.com/node-argon2/organization/4/website) [![](https://opencollective.com/node-argon2/organization/5/avatar.svg)](https://opencollective.com/node-argon2/organization/5/website) [![](https://opencollective.com/node-argon2/organization/6/avatar.svg)](https://opencollective.com/node-argon2/organization/6/website) [![](https://opencollective.com/node-argon2/organization/7/avatar.svg)](https://opencollective.com/node-argon2/organization/7/website) [![](https://opencollective.com/node-argon2/organization/8/avatar.svg)](https://opencollective.com/node-argon2/organization/8/website) [![](https://opencollective.com/node-argon2/organization/9/avatar.svg)](https://opencollective.com/node-argon2/organization/9/website)

## 许可证

根据 [MIT许可证](https://npmcn.com/package/argon2/LICENSE)． 请检查 [P-H-C / phc-winner-argon2](https://github.com/P-H-C/phc-winner-argon2) 用于 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 和提交记录判断。

