AES (Advanced Encryption Standard) 是一种广泛使用的对称加密算法,用于保护电子数据。它是美国国家标准与技术研究院(NIST)于2001年发布的加密标准。
- 分组密码:将明文分成固定长度的块(128位)
- 对称加密:使用相同的密钥进行加密和解密
- 多轮变换:通过多轮的字节替换、行移位、列混合和轮密钥加
- 密钥扩展:将输入密钥扩展为多个轮密钥
- 初始轮密钥加:将明文与初始轮密钥进行异或
- 多轮变换(9-11轮):
- 字节替换(SubBytes)
- 行移位(ShiftRows)
- 列混合(MixColumns)
- 轮密钥加(AddRoundKey)
- 最终轮:不包含列混合
解密是加密的逆过程,按相反顺序执行逆变换。
- 时间复杂度: O(n)
- 空间复杂度: O(n)
| 语言 | 文件名 |
|---|---|
| C | aes.c |
| Java | AES.java |
| Go | aes.go |
| Python | aes.py |
| JavaScript | aes.js |
| Rust | aes.rs |
| TypeScript | AES.ts |
- 无线网络安全(WPA2)
- 文件加密
- SSL/TLS 协议
- 数据库加密
- 存储设备加密
AES 被认为是安全的,目前没有已知的有效攻击方法。密钥长度支持 128位、192位和256位,密钥越长越安全。
本实现为教学目的的简化版本,实际应用应使用成熟的加密库:
- Java: javax.crypto
- Go: crypto/aes
- Python: cryptography
- Node.js: crypto module
- Rust: aes crate