# @emartech/easy-crypto 中文文档

规范地址：https://npmcn.com/package/%40emartech/easy-crypto/

版本：4\.0\.1
npm 元数据更新时间：2026-11-04T10:10:41.258Z
中文译文更新时间：2026-11-13T14:40:25.771Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：33.2 kB，18 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- 首次发布：2016-05-04T18:31:00.209Z
- 最新版本发布：2022-10-13T13:16:19.785Z
- 近 30 天下载量：5305（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：22（近 12 个月 0 个）

## 中文简介

提供围绕节点加密执行的简单包装.

## 安装

```sh
npm install @emartech/easy-crypto
```

也可以使用：`pnpm add @emartech/easy-crypto`、`yarn add @emartech/easy-crypto`、`bun add @emartech/easy-crypto`

## README

# 节点-易感-cypto [![Codeship Status for emartech/node-easy-crypto](https://codeship.com/projects/0baf8660-f4ea-0133-b502-5ef57cbd419a/status?branch=master)](https://codeship.com/projects/150193) [![Depedencies](https://david-dm.org/emartech/node-easy-crypto.svg)](https://david-dm.org/emartech/node-easy-crypto) [![Dev depedencies](https://david-dm.org/emartech/node-easy-crypto/dev-status.svg)](https://david-dm.org/emartech/node-easy-crypto#info=devDependencies&view=table)

提供围绕节点加密执行的简单包装. 库提供两个界面:简单和高级. 简单模式是为易用而设计的,而高级模式在某些用例中提供了一些性能效益. 详情见下文.

所有基础密码操作都是相同的.

## 简单使用( 建议)

刚开始就需要解放 并立即创建一个实例.

```js
const crypto = require('crypto');
const easyCrypto = require('@emartech/easy-crypto');

const password = crypto.randomBytes(24).toString('hex');
const randomData = crypto.randomBytes(1024).toString('hex');

const ecrypto = easyCrypto(password);

async function exampleAsyncFunction() {
    const encrypted = await ecrypto.encrypt(randomData);
    const decrypted = await ecrypto.decrypt(encrypted);
    randomData === decrypted; //true
}
```

## 高级用途(用于性能)

[密钥衍生](https://en.wikipedia.org/wiki/Key_derivation_function) 是一个资源密集的过程。 默认设置在每个加密/解密进程之前重算密钥 .

这些选项允许您缓存密钥衍生结果 。 如果需要用同一衍生密钥加密/解密多次,则需要这样做。 打开密钥 [节点缓存](https://github.com/node-cache/node-cache) 节省您在每次加密/解密前重算的时间 .

刚开始就需要解放 并立即创建一个实例.

```js
const crypto = require('crypto');
const easyCrypto = require('@emartech/easy-crypto');

const password = crypto.randomBytes(24).toString('hex');
const randomData = [
    crypto.randomBytes(1024).toString('hex'),
    crypto.randomBytes(1024).toString('hex'),
    crypto.randomBytes(1024).toString('hex')
];

const ecrypto = easyCrypto(password, {
  encryptCacheTtl: 3600,
  decryptCachePoolSize: 100,
});

async function exampleAsyncFunction() {
    const encrypted = await Promise.all(
        randomData.map(item => ecrypto.encrypt(item))
    );

    const decrypted = await Promise.all(
        encrypted.map(item => ecrypto.decrypt(item))
    );
    
    return data.reduce((allValid, item, index) => {
        return allValid && item === decrypted[index];
    }, true);
}
```

## 接口

### 初始化

没有太多的选择 你可以改变,这是故意的。 此小包装库默认安全 。 您可以更改两个配置 : `encryptCacheTtl`, (中文(简体) ), `decryptCachePoolSize` 以下列方式传递给初始化函数:

```js
let ecrypto = require('@emartech/easy-crypto')('password', {
  encryptCacheTtl: 3600,
  decryptCachePoolSize: 100,
});
```

#### `password`

`password` 应该是任何正常的字符串。 用于生成加密密钥 .

#### `encryptCacheTtl`

在加密时同一密钥被再用时, 时间为秒 。 一定是整数.

#### `decryptCachePoolSize`

解密时保存在缓存中的最大密钥数 。 一定是整数.

### 加密( i)`plaintext`) - > 时间 `ciphertext`

`plaintext` 必须是 `utf-8` 编码字符串。 它将被"转换"为 `bytes` 用于加密操作 这项业务的产出是: `base64` 编码缓冲器。 这将用作 `decrypt` 操作。 此返回值为 `Promise`。 。 。 .

### 解密( n)`ciphertext`) - > 时间 `plaintext`

`ciphertext` 必须是 `encrypt` 方法。 库与盒子外的任何其他加密库不兼容! 此操作的输出为原始 `utf-8` 编码字符串。 此返回值为 `Promise`。 。 。 .

## 密码部件

图书馆只是节点的薄薄包装 `crypto` 模块。 它使用众所周知并经过战斗测试的加密技术. 它提供了一种围绕这些函数的方便的包装器,取去正确使用加密的细节. 自由探索源头吧!

### 加密过程

1.  它为以后的操作生成随机字节
2.  `passwordSaltSize` 随机 `bytes` 用于创建 `256 bit` 长加密密钥 `password` 使用 `pbkdf2` 和给定的 `iteration count`
3.  这个 `plaintext` 正在使用 `aes-256-gcm` 与生成的密钥和 a `12 bytes` 长随机 `initialization vector`,该操作还生成 `16 bytes` 长 `authentication tag`,用于验证加密数据的完整性
4.  它将以下数据汇编成缓冲器: `passwordSalt bytes`, (中文(简体) ), `initialization vector bytes`, (中文(简体) ), `ciphertext bytes`, (中文(简体) ), `authentication tag bytes`
5.  它用 `base64` 还原它

### 解密过程

1.  它解码 `base64` 输入到字节
2.  它将这些数据切入: `passwordSalt bytes`, (中文(简体) ), `initialization vector bytes`, (中文(简体) ), `ciphertext bytes`, (中文(简体) ), `authentication tag bytes`
3.  这个 `passwordSalt bytes` 编辑 `password` 用于生成 `256 bit` 使用长加密密钥 `pbkdf2` 和给定的 `iteration count`
4.  这个 `ciphertext bytes` 使用 `aes-256-gcm` 用生成的密钥 `initialization vector bytes`。在加密期间,还使用 `authentication tag bytes`
5.  它使用 `utf-8` 还原它

## 找到窃听器了吗? 有意见吗?

请找到我们,我们很乐意你的反馈!

## 常见问题

### @emartech/easy-crypto 是什么？

提供围绕节点加密执行的简单包装\.

### 如何安装 @emartech/easy-crypto？

在项目目录运行 npm install @emartech/easy-crypto，或使用 pnpm add / yarn add / bun add。

### @emartech/easy-crypto 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/emartech\_\_easy-crypto 是否存在。

### @emartech/easy-crypto 支持 ESM 还是 CommonJS？

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

### @emartech/easy-crypto 可以商用吗？

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

### @emartech/easy-crypto 的下载量有多少？

根据 npm 官方下载统计，@emartech/easy-crypto 在 2026/10/14 – 2026/11/12 这 30 天内被下载 5,305 次，日均约 177 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @emartech/easy-crypto 还在维护吗？

最新版本 4\.0\.1 发布于 2022/10/13（4 年前）；至今共发布 22 个版本，其中过去 12 个月发布了 0 个；首次发布于 2016/05/05。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

