当前位置: 首页 > backend >正文

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、物联网设备)。


对比总结

特性DES3DESSM4
密钥长度56 位(64 位存储)112 位有效128 位
分组长度64 位64 位128 位
安全性已破解已淘汰高(国密标准)
性能快(但已过时)慢(三次加密)与 AES 相当
应用现状完全淘汰逐步淘汰中国强制推广

选择建议

  1. 历史系统兼容

    • 使用 3DES 过渡,尽快迁移至 AES 或 SM4

  2. 国内合规要求

    • 必须使用 SM4(如政务、金融系统)。

  3. 国际通用场景

    • 优先选择 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)  

注意事项

  1. 加密模式

    • 避免使用 ECB 模式(不安全),优先选 CBC 或 GCM

  2. 密钥管理

    • 使用硬件安全模块(HSM)或密钥管理系统(KMS)。

  3. 合规性

    • 在中国境内,优先遵循 《密码法》 使用 SM2/SM3/SM4 组合。


替代方案

  • AES:国际通用标准,性能与安全性俱佳。

  • ChaCha20:适用于移动设备(如 TLS 1.3)。


总结

  • DES 和 3DES 已过时,仅用于兼容旧系统。

  • SM4 是中国自主密码标准,需在国内合规场景中使用。

  • 新系统应优先选择 AES 或 SM4,并关注算法演进(如抗量子加密)。

http://www.xdnf.cn/news/1189.html

相关文章:

  • 查看Spring Boot项目所有配置信息的几种方法,包括 Actuator端点、日志输出、代码级获取 等方式,附带详细步骤和示例
  • 第十五届蓝桥杯 2024 C/C++组 下一次相遇
  • Uniapp:navigator(页面跳转)
  • 【飞渡科技数字孪生虚拟环境部署与集成教程 - CloudMaster实战指南】
  • KDD Cup 2017 数据集分析
  • G1 人形机器人软件系统架构与 Python SDK
  • BeeWorks:专业的企业Im即时通讯平台
  • PyTorch深度学习框架60天进阶学习计划 - 第48天:移动端模型优化(二)
  • flutter 插件收集
  • 15openlayers获取VectorLayer上的数据
  • C++学习:六个月从基础到就业——C++学习之旅:STL容器详解
  • webpack基础使用了解(入口、出口、插件、加载器、优化、别名、打包模式、环境变量、代码分割等)
  • v-html 显示富文本内容
  • Crawl4AI:打破数据孤岛,开启大语言模型的实时智能新时代
  • 【MCP Node.js SDK 全栈进阶指南】中级篇(3):MCP高级资源设计
  • 进行性核上性麻痹饮食指南:科学膳食提升生活质量
  • 学习Docker遇到的问题
  • SpringBoot高校心理健康系统实现与开发
  • 测试-时间规模化定律可以改进世界基础模型吗?
  • Go 剥离 HTML 标签的三把「瑞士军刀」——从正则到 Bluemonday
  • 实用生活c语言脚本
  • Linux-skywalking部署步骤并且添加探针
  • springboot项目配置springMVC
  • DB-GPT支持mcp协议配置说明
  • leetcode 二分查找
  • TS-300B浊度传感器详解(STM32)
  • 欧拉计划 Project Euler53(组合选择)题解
  • 零基础上手Python数据分析 (21):图表选择困难症?常用可视化类型详解与应用场景指南
  • Python简介
  • 121.在 Vue3 中使用 OpenLayers 实现去掉鼠标右键默认菜单并显示 Feature 信息