首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >EET 易加密工具介绍

EET 易加密工具介绍

作者头像
密码学人CipherHUB
发布2026-02-27 11:21:35
发布2026-02-27 11:21:35
790
举报
文章被收录于专栏:数安视界数安视界

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

1. 安装与快速开始

代码语言:javascript
复制
# 基础安装
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调用:

代码语言:javascript
复制
eet --help

2. 对称加密:国际算法与国密算法

2.1 AES(国际标准)

支持 AES-256-CBCAES-256-GCM两种模式,密钥 32 字节,IV/Nonce 分别为 16/12 字节。

代码语言:javascript
复制
# 加密(默认 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>"

2.2 SM4(国密标准)

与 AES 类似,支持 SM4-CBCSM4-GCM,需安装 easy_gmssl。

代码语言:javascript
复制
# 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

2.3 ZUC(国密流密码)

ZUC 为流密码,密文长度等于明文长度,密钥与 IV 均为 16 字节。

代码语言:javascript
复制
# ZUC 加密
eet zuc -A encrypt -i "stream cipher data"
 # 随机密钥与 IV
eet zuc -A encrypt -i "hello" -r

3. 本地文件加解密

EET 支持对本地文件进行加解密,通过 -f(或 --is-a-file)指定输入为文件路径,-o指定输出文件。

3.1 AES 文件加解密

代码语言:javascript
复制
# 加密文件
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>

3.2 SM4 文件加解密

代码语言:javascript
复制
# 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

3.3 Hash 与 HMAC 对文件的支持

代码语言:javascript
复制
# 计算文件 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

4. 非对称加密:RSA、ECC、SM2

4.1 RSA

支持 2048/3072/4096 位密钥,OAEP 与 PKCS1v15 加密,PSS 与 PKCS1v15 签名。

代码语言:javascript
复制
# 生成密钥对(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>"

4.2 ECC(椭圆曲线)

支持 SECP256R1、SECP384R1、SECP521R1、SECP256K1、Ed25519、X25519 等曲线。

代码语言:javascript
复制
# 生成 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

4.3 SM2(国密非对称)

支持加密/解密、签名/验签,以及多种密文与签名格式。

代码语言:javascript
复制
# 生成 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>"

5. SM2 多种密文格式支持

国密 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,裸字节

代码语言:javascript
复制
# 使用 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 字节):

代码语言:javascript
复制
# 使用 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

6. 信封加密(Envelope Encryption)

信封加密使用非对称密钥或云 KMS 加密随机生成的对称密钥(DEK),再用 DEK 对数据进行对称加密,适合大数据加密与密钥托管场景。

6.1 Local 模式(本地 RSA)

代码语言:javascript
复制
# 先生成 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

6.2 文件加解密(Local)

代码语言:javascript
复制
# 加密文件
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

6.3 KMS 模式:AWS KMS

需安装 easy_encryption_tool[kms],并配置 AWS 凭据(环境变量或 ~/.aws/credentials)。

代码语言:javascript
复制
# 加密(使用 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

6.4 KMS 模式:腾讯云 KMS

需配置 TENCENTCLOUD_SECRET_ID、TENCENTCLOUD_SECRET_KEY等环境变量。

代码语言:javascript
复制
# 加密
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

6.5 可选对称算法与 AAD

信封加密默认使用 AES-256-GCM,也可选择 SM4-GCM、ChaCha20-Poly1305:

代码语言:javascript
复制
# 使用 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

7. Hash 与 HMAC

7.1 Hash

支持 SHA256、SHA384、SHA512、SM3(国密)。

代码语言:javascript
复制
# SHA256
eet hash -i "hello" -a sha256
 # SM3(国密)
eet hash -i "hello" -a sm3
 # 文件哈希
eet hash -i ./file.bin -f -a sha256

7.2 HMAC

支持 SHA224/256/384/512、SHA3-224/256/384/512、SM3。

代码语言:javascript
复制
# 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

8. 其他实用功能

8.1 安全随机字符串

代码语言:javascript
复制
# 生成 32 字节随机字符串(默认)
eet random-str
 # 指定长度
eet random-str -l 64
 # 输出到文件
eet random-str -l 32 -o key.txt

8.2 格式转换(UTF-8 / Base64 / Hex)

代码语言:javascript
复制
# 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"

8.3 X.509 证书解析

代码语言:javascript
复制
# 解析 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

8.4 整数与字节转换、时间戳

代码语言:javascript
复制
# 整数转大端/小端十六进制
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"

8.5 Shell 自动补全

代码语言:javascript
复制
# 安装 zsh 补全
eet install-completion --shell zsh
 # 安装 bash 补全
eet install-completion --shell bash
 # 输出到文件
eet install-completion --shell zsh -p ~/.zshrc.d/eet-completion.zsh

9. 输出格式

EET 支持多种输出格式,便于脚本或管道使用:

代码语言:javascript
复制
# 默认 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

10. 特性小结

类别

说明

对称加密

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 补全

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bowenerchen 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装与快速开始
  • 2. 对称加密:国际算法与国密算法
    • 2.1 AES(国际标准)
    • 2.2 SM4(国密标准)
    • 2.3 ZUC(国密流密码)
  • 3. 本地文件加解密
    • 3.1 AES 文件加解密
    • 3.2 SM4 文件加解密
    • 3.3 Hash 与 HMAC 对文件的支持
  • 4. 非对称加密:RSA、ECC、SM2
    • 4.1 RSA
    • 4.2 ECC(椭圆曲线)
    • 4.3 SM2(国密非对称)
  • 5. SM2 多种密文格式支持
  • 6. 信封加密(Envelope Encryption)
    • 6.1 Local 模式(本地 RSA)
    • 6.2 文件加解密(Local)
    • 6.3 KMS 模式:AWS KMS
    • 6.4 KMS 模式:腾讯云 KMS
    • 6.5 可选对称算法与 AAD
  • 7. Hash 与 HMAC
    • 7.1 Hash
    • 7.2 HMAC
  • 8. 其他实用功能
    • 8.1 安全随机字符串
    • 8.2 格式转换(UTF-8 / Base64 / Hex)
    • 8.3 X.509 证书解析
    • 8.4 整数与字节转换、时间戳
    • 8.5 Shell 自动补全
  • 9. 输出格式
  • 10. 特性小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档