DES、3DES、SM4 加密算法简介
1. DES(Data Encryption Standard)
-  设计时间:1975 年(IBM 开发,1977 年被 NIST 采纳为美国联邦标准)。 
-  密钥长度:64 位(实际有效 56 位 + 8 位校验)。 
-  分组长度:64 位。 
-  加密轮数:16 轮 Feistel 结构。 
-  安全性: -  已被破解(暴力破解可在数小时内完成)。 
-  密钥过短(56 位),无法抵抗现代算力攻击。 
 
-  
-  应用场景: -  已淘汰,仅用于历史系统或教学。 
-  被 AES 取代。 
 
-  
2. 3DES(Triple DES)
-  设计时间:1998 年(DES 的增强版)。 
-  密钥长度:168 位(实际有效 112 位,因存在中间相遇攻击)。 
-  加密流程:三次 DES 操作(加密-解密-加密,即 EDE)。 
-  分组长度:64 位。 
-  安全性: -  安全性优于 DES,但效率低。 
-  2023 年后被 NIST 禁用(SP 800-171 Rev.5)。 
 
-  
-  应用场景: -  传统金融系统(如 POS 机、ATM)。 
-  逐步被 AES 或 SM4 替代。 
 
-  
3. SM4(国密算法)
-  设计时间:2012 年(中国国家密码管理局发布)。 
-  密钥长度:128 位。 
-  分组长度:128 位。 
-  加密轮数:32 轮非线性迭代结构。 
-  安全性: -  抗差分和线性分析能力与 AES 相当。 
-  符合中国商用密码标准(GMT 0002-2012)。 
 
-  
-  应用场景: -  中国政府、金融、电力等关键领域。 
-  国产化替代(如 VPN、物联网设备)。 
 
-  
对比总结
| 特性 | DES | 3DES | SM4 | 
|---|---|---|---|
| 密钥长度 | 56 位(64 位存储) | 112 位有效 | 128 位 | 
| 分组长度 | 64 位 | 64 位 | 128 位 | 
| 安全性 | 已破解 | 已淘汰 | 高(国密标准) | 
| 性能 | 快(但已过时) | 慢(三次加密) | 与 AES 相当 | 
| 应用现状 | 完全淘汰 | 逐步淘汰 | 中国强制推广 | 
选择建议
-  历史系统兼容: -  使用 3DES 过渡,尽快迁移至 AES 或 SM4。 
 
-  
-  国内合规要求: -  必须使用 SM4(如政务、金融系统)。 
 
-  
-  国际通用场景: -  优先选择 AES-256(高安全性)或 AES-128(高性能)。 
 
-  
代码示例(Python)
3DES 加密(PyCryptodome)
from Crypto.Cipher import DES3  
from Crypto.Random import get_random_bytes  key = get_random_bytes(24)  # 3DES 需 24 字节密钥  
data = b"Data to encrypt"  # 加密  
cipher = DES3.new(key, DES3.MODE_CBC)  
ciphertext = cipher.encrypt(data.ljust(8 * (len(data)//8 + 1)))  # 填充至 8 字节倍数  # 解密  
decipher = DES3.new(key, DES3.MODE_CBC, iv=cipher.iv)  
plaintext = decipher.decrypt(ciphertext).strip()  SM4 加密(需国密库,如 gmssl)
 
from gmssl import sm4  key = get_random_bytes(16)  
data = b"Sensitive data"  # 加密  
cipher = sm4.CryptSM4()  
cipher.set_key(key, sm4.SM4_ENCRYPT)  
ciphertext = cipher.crypt_ecb(data)  # 解密  
cipher.set_key(key, sm4.SM4_DECRYPT)  
plaintext = cipher.crypt_ecb(ciphertext)  注意事项
-  加密模式: -  避免使用 ECB 模式(不安全),优先选 CBC 或 GCM。 
 
-  
-  密钥管理: -  使用硬件安全模块(HSM)或密钥管理系统(KMS)。 
 
-  
-  合规性: -  在中国境内,优先遵循 《密码法》 使用 SM2/SM3/SM4 组合。 
 
-  
替代方案
-  AES:国际通用标准,性能与安全性俱佳。 
-  ChaCha20:适用于移动设备(如 TLS 1.3)。 
总结
-  DES 和 3DES 已过时,仅用于兼容旧系统。 
-  SM4 是中国自主密码标准,需在国内合规场景中使用。 
-  新系统应优先选择 AES 或 SM4,并关注算法演进(如抗量子加密)。 
