特点: 加密和解密使用同一密钥
密钥长度: 128位、192位、256位
目前最广泛使用的对称加密算法
应用: HTTPS、VPN、文件加密
| 模式 | 全称 | 安全性 | 并行性 | 填充需求 | 认证功能 | 主要特点与适用场景 |
|---|---|---|---|---|---|---|
| ECB | Electronic Codebook | 低(不推荐) | 支持 | 需要 | 无 | 简单、相同明文块密文相同,易泄密(不要IV) |
| CBC | Cipher Block Chaining | 较高 | 解密可并行 | 需要 | 无 | 常用,需IV,错误传播,适合文件加密 |
| CFB | Cipher Feedback | 较高 | 不支持 | 不需要 | 无 | 流加密,适合实时数据 |
| OFB | Output Feedback | 较高 | 支持 | 不需要 | 无 | 流加密,错误不传播,适合有噪声信道 |
| CTR | Counter | 高 | 支持 | 不需要 | 无 | 支持并行,效率高,需唯一计数器 |
| GCM | Galois/Counter Mode | 很高 | 支持 | 不需要 | 有 | 加密+认证,效率高,现代通信首选 |
| XTS | XEX-based Tweaked Codebook | 高 | 支持 | 不需要 | 无 | 专为磁盘加密设计,支持随机访问 |
| 填充模式 | 描述说明 |
|---|---|
| PKCS#7(最常用) | 不足N字节就填充N个字节的N,如:3个字节 ➔ \x03\x03\x03 |
| PKCS#5 | PKCS#7 的一个子集,仅用于8字节块(AES其实是16字节) |
| Zero Padding | 用\x00填充到块长度;不能用于有结尾0的明文 |
| ANSI X.923 | 用\x00...\x00N,最后一个字节为填充长度 |
| ISO/IEC 7816-4 | 先填一个\x80,其余用\x00 |
| NoPadding | 不填充,但要求输入必须是块大小整数倍(常用于手动处理或CTR等模式) |
特点: 使用公钥加密,私钥解密
特点: 不可逆转换,输出固定长度值
块加密模式,每个块与前一块相关
需要初始化向量(IV)
提供认证和加密(AEAD)
高效、安全,广泛使用
将块密码转为流密码
支持并行加密