@emartech/easy-crypto

中文文档
4.0.1发布于 2022/10/13MITCommonJS近 30 天下载 5305

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

中文使用文档
文档目录10 节
  1. 简单使用( 建议)
  2. 高级用途(用于性能)
  3. 接口
  4. 初始化
  5. 加密( i) plaintext ) - > 时间 ciphertext
  6. 解密( n) ciphertext ) - > 时间 plaintext
  7. 密码部件
  8. 加密过程
  9. 解密过程
  10. 找到窃听器了吗? 有意见吗?

节点-易感-cypto Codeship Status for emartech/node-easy-crypto Depedencies Dev depedencies

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

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

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

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
}

高级用途(用于性能)

密钥衍生 是一个资源密集的过程。 默认设置在每个加密/解密进程之前重算密钥 .

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

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

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 以下列方式传递给初始化函数:

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 共发布 22 个版本,首次发布于 2016/05/05;过去 12 个月发布了 0 个版本。

版本发布日期距今
4.0.1latest2022/10/134 年前
4.0.02020/04/236 年前
3.1.62020/01/156 年前
3.1.52019/07/297 年前
3.1.42019/05/097 年前
3.1.32019/01/117 年前

关于 @emartech/easy-crypto 的常见问题

@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 和提交记录判断。