概述
EET 的功能可归纳为三部分:
| 类别 | 说明 |
|---|---|
| 贴近实际应用 | envelope 与 structured:信封加密、结构化配置叶子加密,均支持本地模式与云 KMS 模式,让用户一键实现配置文件加密与敏感数据信封加密。 |
| 密码学基础原子能力 | AES/SM4/ZUC 对称加解密,RSA/ECC/SM2 非对称加解密与签名验签,Hash、HMAC 等。 |
| 常用工具能力 | 大小端转换、时间戳转换、字符串编码转换、安全随机串、证书解析、Shell 补全等。 |
安装与入口:
| |
调用方式:eet 或 easy_encryption_tool。
一、贴近实际应用:envelope 与 structured
这两类能力直接面向「配置与敏感数据保护」,是 EET 中最接近实际业务场景的部分;二者都支持本地模式(Local)和云 KMS 模式,便于在自管密钥与托管密钥之间统一体验。
1.1 信封加密(envelope)
作用:用 RSA 公钥或云 KMS 加密随机生成的对称密钥(DEK),再用 DEK 对数据进行对称加密;输出为单一 blob(base64 或二进制文件),解密时只需私钥/KMS + 信封即可还原。
典型场景:短文本加密、大文件备份、密钥托管、合规审计。
模式概览
| 模式 | 选项 | 密钥来源 | 适用场景 |
|---|---|---|---|
| local | --mode local(默认) | 本地 RSA 公钥/私钥 | 自管密钥、离线环境 |
| kms | --mode kms | 云 KMS | 密钥托管、多云/合规 |
Local 模式(RSA)
| |
KMS 模式(云密钥管理)
需安装 easy-encryption-tool[kms],并配置对应云凭据(环境变量或配置文件)。
支持的 KMS 后端:aws、tencentcloud、aliyun、huaweicloud、googlecloud、hashicorpvault、azure。
| |
可选参数
- 对称算法:
--symmetric-algo可选aes-256-gcm(默认)、sm4-gcm、chacha20-poly1305 - AAD:
--aad自定义 GCM AAD,加密时写入信封,解密自动读取。
1.2 结构化加密(structured)
作用:对 JSON / YAML / INI 等结构化配置文件做叶子节点级加密,仅敏感字段被替换为密文 token,结构保留、diff 友好;密钥管理复用 envelope 的 DEK 包裹(RSA local 或云 KMS),并支持文件级 MAC 完整性校验。
典型场景:配置文件中的密码、API Key、证书等敏感项加密存储,CI/CD 或 Git 中安全存放配置。
模式与密钥(与 envelope 一致)
- local:RSA 公钥/私钥
- kms:与 envelope 相同的
--kms-backend、--kms-key-id、--kms-region等
基本用法
| |
加密范围策略
通过 key 路径或后缀控制「哪些叶子加密」:
| 选项 | 说明 |
|---|---|
--encrypted-regex | 仅匹配该正则的路径加密 |
--unencrypted-regex | 匹配该正则的路径不加密 |
--encrypted-suffix | 仅 key 以该后缀结尾的加密(如 _secret、_password) |
--unencrypted-suffix | 以该后缀结尾的不加密 |
--mac-only-encrypted | MAC 仅覆盖被加密的叶子(默认 MAC 覆盖全部叶子) |
同类策略互斥(encrypted-* 与 unencrypted-* 各选其一)。
文件格式与限制
- 输入格式:
--input-type auto|json|yaml|ini,auto按扩展名推断 - 文件大小:加密默认最大 64MB,解密默认 128MB,可用
--max-file-size调整 - 叶子密文:加密后为
ENC[EET_AEAD,data:...,iv:...,tag:...,type:...,v:1]形式,支持类型包括 str、int、float、bool、bytes、time 等;null 默认不加密
设计细节见 EET_STRUCTURED_ENCRYPTION_V1_DESIGN.md。
二、密码学基础原子能力
提供可直接复用的加解密、签名验签、摘要与 MAC 能力,便于脚本、测试或与 CipherHUB 等系统对齐。
2.1 对称加密
| 算法 | 命令 | 模式/说明 |
|---|---|---|
| AES | eet aes | AES-256-CBC、AES-256-GCM;key 32 字节,IV 16/Nonce 12 |
| SM4 | eet sm4 | SM4-CBC、SM4-GCM;需 easy_gmssl |
| ZUC | eet zuc | 国密流密码,密文长度=明文长度;key/iv 各 16 字节;需 easy_gmssl |
通用参数:-A encrypt|decrypt、-i 输入、-e 表示输入为 base64、-f 表示输入为文件(此时需 -o 指定输出)、-r 随机生成 key/iv、-k/-v 指定 key/iv。
| |
2.2 非对称加密与签名
| 算法 | 命令 | 能力 |
|---|---|---|
| RSA | eet rsa | generate、encrypt、decrypt、sign、verify;支持 2048/3072/4096 位;OAEP/PKCS1v15 加密,PSS/PKCS1v15 签名 |
| ECC | eet ecc | generate、ecdh、sign、verify;曲线:secp256r1/384r1/521r1、secp256k1、Ed25519、X25519 |
| SM2 | eet sm2 | generate、encrypt、decrypt、sign、verify;需 easy_gmssl;密文格式 C1C3C2/C1C2C3、ASN1/裸字节;签名格式 RS_ASN1/RS |
| |
2.3 哈希与 HMAC
| 类型 | 命令 | 算法 |
|---|---|---|
| Hash | eet hash | SHA256、SHA384、SHA512、SM3(国密,需 easy_gmssl) |
| HMAC | eet hmac | SHA224/256/384/512、SHA3-224/256/384/512、SM3 |
支持 -i 文本、-e base64、-f 文件输入。
| |
三、常用工具能力
面向日常开发与运维的辅助命令,与加解密、编码、时间、字节序等强相关。
3.1 字符串编码转换(convert)
UTF-8 与 Base64、Hex 互转;解码时自动判断输出为 UTF-8 或 Hex/Base64。
| |
3.2 时间戳转换(ts)
秒级时间戳与带时区时间字符串互转;默认时区为北京时间(Asia/Shanghai)。
| |
3.3 整数与大小端(int-to-bytes)
整数与大端/小端十六进制互转,便于协议或二进制格式处理。
| |
3.4 其他
| 能力 | 命令 | 说明 |
|---|---|---|
| 安全随机串 | eet random-str | CSPRNG 生成指定长度随机字符串;-l 长度,-o 写文件 |
| X.509 证书解析 | eet cert-parse | 解析 PEM/DER、国密 SM2 证书(-g) |
| Shell 补全 | eet install-completion | `–shell zsh |
| 版本与能力 | eet version / eet --version | 版本号、运行环境、可选能力(如 KMS 支持) |
四、输出格式与规范
- 默认:彩色 Pretty JSON,含
metadata、result、runtime --json:单行 JSON,便于管道与 jq--raw:仅输出主结果(如 cipher、plain、digest、envelope),便于复制与管道
错误与提示统一通过结构化输出或 messages 字段呈现,敏感信息(密钥、私钥路径、密码)不写入输出。
五、特性小结表
| 类别 | 内容 |
|---|---|
| 应用层 | envelope(本地/KMS)、structured(JSON/YAML/INI 叶子加密,本地/KMS) |
| 对称加密 | AES-256-CBC/GCM、SM4-CBC/GCM、ZUC 流密码 |
| 非对称 | RSA、ECC(含 Ed25519/X25519)、SM2 |
| 国密 | SM2、SM3、SM4、ZUC(需 easy_gmssl) |
| 哈希与 MAC | SHA256/384/512、SHA3、SM3;HMAC |
| 云 KMS | AWS、腾讯云、阿里云、华为云、Google Cloud、HashiCorp Vault、Azure(需 [kms]) |
| 工具 | convert、ts、int-to-bytes、random-str、cert-parse、install-completion |