@ecies/密码
节点/Pure JavaScript对称密码适配器.
如果一些平台(如节点、德诺、包子)有本地执行,它就会使用 node:crypto 提高效率.
否则(例如浏览器,反应原生),它将使用 @noble/ciphers 用于兼容性.
| 爱斯 | 恰克语name | |
|---|---|---|
| 节点 | node:crypto ⚡ | node:crypto ⚡ |
| 阿宝 | node:crypto ⚡ | @noble/ciphers |
| 德诺 | node:crypto ⚡ | node:crypto ⚡ |
| 浏览器 | @noble/ciphers | @noble/ciphers |
| 原生反应 | @noble/ciphers | @noble/ciphers |
[注] 您可能需要多填充
crypto.getRandomValues反应原生.有些限制,你看 已知的限制 见下文.
这个库是可树摇动的,未使用的代码会被捆绑者排除在外.
检查 实例 用于更多用途的文件夹.
快开始
// example/quick-start.js
import { aes256gcm } from "@ecies/ciphers/aes";
import { randomBytes } from "@noble/ciphers/webcrypto";
const TEXT = "hello world🌍!";
const encoder = new TextEncoder();
const decoder = new TextDecoder();
const msg = encoder.encode(TEXT);
const key = randomBytes();
const nonce = randomBytes(16);
const cipher = aes256gcm(key, nonce);
console.log("decrypted:", decoder.decode(cipher.decrypt(cipher.encrypt(msg))));
API跟着 @noble/ciphers方便使用的API,你可以检查它们 实例 还有.
支持的密码
aes-256-gcm- 16个字节和12个字节nice都得到了支持.
aes-256-cbc- 仅用于遗留应用程序。您应当使用
xchacha20-poly1305或者说aes-256-gcm尽可能. - 诺斯总是16字节.
- 仅用于遗留应用程序。您应当使用
chacha20-poly1305- 农斯总是12字节.
xchacha20-poly1305- 农斯总是24字节.
如果密钥是固定的,而非斯小于16字节, 避免随机生成非ce。 。 。 .
已知的限制
xchacha20-poly1305与纯粹的联署材料一起实施hchacha20函数和node:crypto是因为chacha20-poly1305节点/节点.- 目前(2026年4月),
node:crypto是因为chacha20-poly1305不支持关于 包头, (中文(简体) ),@noble/ciphers其执行被使用。 从德诺 2.7.10,node:crypto是因为chacha20-poly1305实值 支持。请升级 deno, 以便使用本地执行来提高绩效. - 一些旧版本的
deno不支持 间接 有条件出口。 例如,如果一个库使用@ecies/ciphers该图书馆的客户端代码可能回落到node:crypto执行《公约》的情况,特别是aes-256-gcm财务报告和审定财务报表chacha20-poly1305。如果你发现这样的问题,请升级 deno 并运行--conditions deno(>= 2.4.0)或--unstable-node-conditions deno(>=2.3.6,<2.4.0].