EET(Easy Encryption Tool)是一款功能丰富的命令行加密工具,支持主流国际算法与国密算法,适用于开发、测试、运维等场景的加解密、签名验签、哈希计算等操作。本文基于 EET v2.3.7 介绍其核心特性与典型用法。

# 基础安装
pip install easy-encryption-tool
# 启用国密算法(SM2/SM3/SM4/ZUC)
pip install easy-encryption-tool[gmssl]
# 启用云 KMS 信封加密(AWS、腾讯云)
pip install easy-encryption-tool[kms]
# 一键安装全部能力
pip install easy-encryption-tool[gmssl,kms]安装后可通过 eet或 easy_encryption_tool调用:
eet --help
支持 AES-256-CBC与 AES-256-GCM两种模式,密钥 32 字节,IV/Nonce 分别为 16/12 字节。
# 加密(默认 CBC 模式)
eet aes -A encrypt -i "hello world"
# 使用 GCM 模式(带认证)
eet aes -m gcm -A encrypt -i "hello world"
# 随机密钥与 IV(适合一次性加密)
eet aes -m gcm -A encrypt -i "hello" -r
# 解密
eet aes -m gcm -A decrypt -i "<base64密文>" -k "<key>" -v "<nonce>" -t "<tag>"

与 AES 类似,支持 SM4-CBC与 SM4-GCM,需安装 easy_gmssl。
# SM4-CBC 加密
eet sm4 -m cbc -A encrypt -i "国密加密测试"
# SM4-GCM 加密(带认证)
eet sm4 -m gcm -A encrypt -i "国密加密测试"
# 随机密钥与 IV
eet sm4 -m gcm -A encrypt -i "hello" -r

ZUC 为流密码,密文长度等于明文长度,密钥与 IV 均为 16 字节。
# ZUC 加密
eet zuc -A encrypt -i "stream cipher data"
# 随机密钥与 IV
eet zuc -A encrypt -i "hello" -r

EET 支持对本地文件进行加解密,通过 -f(或 --is-a-file)指定输入为文件路径,-o指定输出文件。
# 加密文件
eet aes -m cbc -A encrypt -i ./sensitive.txt -f -o ./sensitive.txt.enc
# 解密文件
eet aes -m cbc -A decrypt -i ./sensitive.txt.enc -f -o ./restored.txt
# GCM 模式(需提供 key、iv、tag)
eet aes -m gcm -A encrypt -i ./data.bin -f -o ./data.bin.enc -r
eet aes -m gcm -A decrypt -i ./data.bin.enc -f -o ./data_restored.bin -k <key> -v <nonce> -t <tag>


# SM4 加密文件
eet sm4 -m cbc -A encrypt -i ./config.json -f -o ./config.json.enc
# SM4 解密文件
eet sm4 -m cbc -A decrypt -i ./config.json.enc -f -o ./config_restored.json


# 计算文件 SHA256
eet hash -i ./package.tar.gz -f -a sha256
# 计算文件 SM3(国密)
eet hash -i ./package.tar.gz -f -a sm3
# 计算文件 HMAC
eet hmac -i ./package.tar.gz -f -k "my-secret-key" -h sha256

支持 2048/3072/4096 位密钥,OAEP 与 PKCS1v15 加密,PSS 与 PKCS1v15 签名。
# 生成密钥对(PEM 格式)
eet rsa generate -f my_rsa -s 2048 -p "strong_password"
# 带密码保护
eet rsa generate -f my_rsa -s 4096 -p "strong_password"
# 随机密码(-r 自动生成 32 字节密码)
eet rsa generate -f my_rsa -s 2048 -r
# 加密
eet rsa encrypt -e pem -f my_rsa_public.pem -i "secret message"
# 解密
eet rsa decrypt -e pem -f my_rsa_private.pem -i "<ciphertext>" -p "strong_password"
# 签名与验签
eet rsa sign -e pem -f my_rsa_private.pem -i "message to sign" -p "strong_password"
eet rsa verify -e pem -f my_rsa_public.pem -i "message to sign" -s "<signature>"






支持 SECP256R1、SECP384R1、SECP521R1、SECP256K1、Ed25519、X25519 等曲线。
# 生成 ECC 密钥对
eet ecc generate -f my_ecc -c secp256r1
# ECDH 密钥交换(-k 己方私钥,-b 对方公钥)
eet ecc ecdh -k alice_private.pem -b bob_public.pem
# ECDSA 签名与验签
eet ecc sign -f my_ecc_private.pem -i "data" -c secp256r1
eet ecc verify -f my_ecc_public.pem -i "data" -s "<signature>" -c secp256r1


支持加密/解密、签名/验签,以及多种密文与签名格式。
# 生成 SM2 密钥对
eet sm2 generate -f my_sm2 -p "password" -r
# 加密(默认 C1C3C2_ASN1 格式)
eet sm2 encrypt -f my_sm2_public.pem -i "国密加密"
# 解密
eet sm2 decrypt -f my_sm2_private.pem -i "<cipher>" -p "password"
# 签名与验签
eet sm2 sign -f my_sm2_private.pem -i "message" -p "password"
eet sm2 verify -f my_sm2_public.pem -i "message" -s "<signature>"




国密 SM2 存在多种密文排列顺序(C1C3C2、C1C2C3)及编码方式(ASN.1、裸字节),EET 支持四种组合:
格式 | 说明 |
|---|---|
C1C3C2_ASN1 | C1|C3|C2,ASN.1 编码(默认) |
C1C3C2 | C1|C3|C2,裸字节 |
C1C2C3_ASN1 | C1|C2|C3,ASN.1 编码 |
C1C2C3 | C1|C2|C3,裸字节 |
# 使用 C1C2C3 格式加密
eet sm2 encrypt -f pub.pem -i "data" -m C1C2C3
# 使用 C1C3C2_ASN1 加密(默认)
eet sm2 encrypt -f pub.pem -i "data" -m C1C3C2_ASN1
# 输出 hex 格式
eet sm2 encrypt -f pub.pem -i "data" -o hex
# 解密时需指定与加密相同的格式
eet sm2 decrypt -f priv.pem -i "<cipher>" -p "pwd" -m C1C2C3签名格式支持 RS_ASN1(ASN.1)与 RS(r|s 各 32 字节):
# 使用 RS 格式签名
eet sm2 sign -f priv.pem -i "msg" -p "pwd" -m RS
# 验签
eet sm2 verify -f pub.pem -i "msg" -s "<sig>" -m RS信封加密使用非对称密钥或云 KMS 加密随机生成的对称密钥(DEK),再用 DEK 对数据进行对称加密,适合大数据加密与密钥托管场景。
# 先生成 RSA 密钥对
eet rsa generate -f envelope_key -s 2048 -r
# 加密(明文字符串)
eet envelope encrypt -f envelope_key_public.pem -i "机密内容"
# 仅输出 base64 信封(便于管道)
eet envelope encrypt -f envelope_key_public.pem -i "hello" --raw
# 解密
ENV=$(eet envelope encrypt -f envelope_key_public.pem -i "hello" --raw)
eet envelope decrypt -f envelope_key_private.pem -i "$ENV" --raw
# 管道串联
eet envelope encrypt -f envelope_key_public.pem -i "hello" --raw | \
eet envelope decrypt -f envelope_key_private.pem -i - --raw

# 加密文件
eet envelope encrypt -f envelope_key_public.pem -i data.bin --from-file -o data.env
# 解密文件
eet envelope decrypt -f envelope_key_private.pem -i data.env --from-file -o plain.txt需安装 easy_encryption_tool[kms],并配置 AWS 凭据(环境变量或 ~/.aws/credentials)。
# 加密(使用 AWS KMS)
eet envelope encrypt --mode kms --kms-backend aws \
--kms-key-id arn:aws:kms:us-east-1:123456789:key/xxx \
--kms-region us-east-1 -i "data"
# 仅输出 base64 信封
eet envelope encrypt --mode kms --kms-backend aws \
--kms-key-id key-id --kms-region us-east-1 -i "data" --raw
# 解密(key-id 可从信封内自动解析)
eet envelope decrypt --mode kms --kms-backend aws --kms-region us-east-1 -i "$ENV" --raw
# 文件加解密
eet envelope encrypt --mode kms --kms-backend aws \
--kms-key-id key-id --kms-region us-east-1 \
-i /path/to/sensitive.db --from-file -o backup.db.env
eet envelope decrypt --mode kms --kms-backend aws --kms-region us-east-1 \
-i backup.db.env --from-file -o restored.db

需配置 TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY等环境变量。
# 加密
eet envelope encrypt --mode kms --kms-backend tencentcloud \
--kms-key-id <key-id> --kms-region ap-guangzhou -i "data"
# 解密
eet envelope decrypt --mode kms --kms-backend tencentcloud \
--kms-region ap-guangzhou -i "$ENV" --raw

信封加密默认使用 AES-256-GCM,也可选择 SM4-GCM、ChaCha20-Poly1305:
# 使用 SM4-GCM(需 easy_gmssl)
eet envelope encrypt -f pub.pem -i "data" --symmetric-algo sm4-gcm
# 使用 ChaCha20-Poly1305
eet envelope encrypt -f pub.pem -i "data" --symmetric-algo chacha20-poly1305
# 自定义 AAD(加解密需一致)
eet envelope encrypt -f pub.pem -i "data" --aad "my-context-001"
eet envelope decrypt -f priv.pem -i "$ENV" --aad "my-context-001" --raw支持 SHA256、SHA384、SHA512、SM3(国密)。
# SHA256
eet hash -i "hello" -a sha256
# SM3(国密)
eet hash -i "hello" -a sm3
# 文件哈希
eet hash -i ./file.bin -f -a sha256支持 SHA224/256/384/512、SHA3-224/256/384/512、SM3。
# HMAC-SHA256
eet hmac -i "data" -k "secret" -h sha256
# HMAC-SM3(国密)
eet hmac -i "data" -k "secret" -h sm3
# 文件 HMAC
eet hmac -i ./file.bin -f -k "secret" -h sha512# 生成 32 字节随机字符串(默认)
eet random-str
# 指定长度
eet random-str -l 64
# 输出到文件
eet random-str -l 32 -o key.txt
# UTF-8 → Base64
eet convert utf8-to-base64 -i "hello"
# Base64 → UTF-8
eet convert base64-to-utf8 -i "aGVsbG8="
# UTF-8 → Hex
eet convert utf8-to-hex -i "hello"
# Hex → UTF-8
eet convert hex-to-utf8 -i "68656c6c6f"
# 解析 PEM 证书
eet cert-parse -f certificate.pem
# 解析 DER 证书
eet cert-parse -f certificate.der -e der
# 解析国密 SM2 证书
eet cert-parse -f sm2_cert.pem -g
# 整数转大端/小端十六进制
eet int-to-bytes to-hex -i 12345
# 时间戳转日期时间
eet ts to-datetime -i 1700000000
# 日期时间转时间戳
eet ts to-ts -i "2024-01-01 00:00:00"


# 安装 zsh 补全
eet install-completion --shell zsh
# 安装 bash 补全
eet install-completion --shell bash
# 输出到文件
eet install-completion --shell zsh -p ~/.zshrc.d/eet-completion.zshEET 支持多种输出格式,便于脚本或管道使用:
# 默认 JSON(含 metadata、result、runtime)
eet aes -A encrypt -i "hello"
# 仅输出主结果(--raw)
eet aes -A encrypt -i "hello" --raw
# 格式化 JSON(--pretty-json)
eet hash -i "hello" -a sha256 --pretty-json类别 | 说明 |
|---|---|
对称加密 | AES-256-CBC/GCM、SM4-CBC/GCM、ZUC 流密码 |
非对称加密 | RSA、ECC(含 Ed25519/X25519)、SM2 |
国密支持 | SM2、SM3、SM4、ZUC,需 easy_gmssl |
文件操作 | 支持 -f对本地文件加解密、哈希、HMAC |
SM2 格式 | C1C3C2_ASN1、C1C3C2、C1C2C3_ASN1、C1C2C3;签名 RS_ASN1、RS |
信封加密 | Local(RSA)、KMS(AWS、腾讯云),支持大文件流式加密 |
Hash/HMAC | SHA256/384/512、SHA3、SM3 |
工具 | 随机字符串、格式转换、证书解析、Shell 补全 |