K
ken
首页文章🕐 时间转换📋 JSON 工具🖼️ Base64 图片🔑 密码生成 Cron 表达式🔤 命名转换📱 二维码生成#️⃣ 哈希计算🔡 编码转换🔍 正则表达式⚙️ 配置文件格式转化🔐 加解密
安全相关

常见加密算法(MD5/SHA/AES)区别

2026-04-27·4 分钟阅读

概述

日常开发中经常会遇到 MD5、SHA、AES 这些名字,但它们用途完全不同。简单来说:MD5 和 SHA 是哈希算法,AES 是加密算法。哈希是单向的,加密是可逆的。

MD5

是什么

MD5(Message Digest Algorithm 5)是一个 128 位的哈希算法,输出 32 个十六进制字符。诞生于 1991 年,曾经是最流行的哈希算法之一。

特点

  • 输出固定 128 bit(32 个十六进制字符)
  • 计算速度快
  • **已不再安全**——2004 年被证明存在碰撞攻击,2008 年已被攻破
  • 实际用途

  • **文件完整性校验**:非安全性场景的快速校验
  • **数据库哈希键**:一致性哈希
  • **旧系统兼容**:遗留系统维护
  • 安全建议

    不要再将 MD5 用于密码存储、数字签名、证书验证等安全场景。如果只是需要快速校验文件完整性,MD5 仍然可用。

    SHA 家族

    SHA(Secure Hash Algorithm)由美国国家安全局设计,是目前使用最广泛的哈希算法族。

    SHA-1

  • 输出 160 bit(40 个十六进制字符)
  • 2017 年 Google 展示了 SHAttered 碰撞攻击
  • 已不再推荐使用
  • SHA-2

    SHA-2 是当前推荐使用的哈希算法,包含多个输出长度:

  • **SHA-224**:224 bit,兼容性场景
  • **SHA-256**:256 bit,最常用,证书签名、文件校验
  • **SHA-384**:384 bit,更高安全性
  • **SHA-512**:512 bit,最高安全性
  • SHA-256 是当前最推荐的哈希算法。Git 用它来标识提交(commit hash),HTTPS 证书签名也在使用。

    SHA-3

    2015 年发布的最新 SHA 标准,基于 Keccak 算法。与 SHA-2 完全不同,安全性更高。目前尚未大规模普及,但作为备用方案存在。

    使用示例

    bash双击代码复制
    # Linux 计算文件哈希
    md5sum file.txt
    sha256sum file.txt
    sha512sum file.txt
    javascript双击代码复制
    // JavaScript (Web Crypto API)
    const hash = await crypto.subtle.digest('SHA-256', data)
    go双击代码复制
    // Go
    import "crypto/sha256"
    hash := sha256.Sum256(data)

    AES

    是什么

    AES(Advanced Encryption Standard)是一种对称加密算法,加密和解密使用同一个密钥。2001 年被 NIST 采纳为联邦标准。

    密钥长度

  • **AES-128**:128 bit 密钥,加密 10 轮
  • **AES-192**:192 bit 密钥,加密 12 轮
  • **AES-256**:256 bit 密钥,加密 14 轮
  • 密钥越长越安全,但性能也越慢。AES-256 是目前最常用的选择。

    加密模式

  • **ECB**:最简单,不安全,不推荐
  • **CBC**:最常用,需要 IV(初始化向量)
  • **GCM**:认证加密模式,同时保证机密性和完整性,推荐使用
  • **CTR**:计数器模式,支持并行计算
  • 使用场景

  • 文件加密
  • 数据库字段加密
  • VPN 数据传输
  • 磁盘加密(BitLocker、FileVault 都使用 AES)
  • 使用示例

    javascript双击代码复制
    // Web Crypto API
    const key = await crypto.subtle.generateKey(
      { name: 'AES-GCM', length: 256 },
      true,
      ['encrypt', 'decrypt']
    )

    哈希 vs 加密

    **哈希(MD5 / SHA):**

  • 方向:单向,不可逆
  • 输出长度:固定长度
  • 密钥:不需要
  • 用途:完整性校验、数据指纹
  • 典型场景:文件校验、密码哈希存储
  • **加密(AES):**

  • 方向:双向,可解密
  • 输出长度:与输入长度相同
  • 密钥:需要密钥
  • 用途:数据保密
  • 典型场景:数据传输加密、文件加密
  • RSA 非对称加密

    除了 AES 这类对称加密,还有 RSA 这类非对称加密。RSA 使用公钥加密、私钥解密,解决了密钥分发的问题。但 RSA 速度比 AES 慢很多,通常只用来加密少量数据(如 AES 密钥),实际数据用 AES 加密。

    总结

  • **MD5**:已不安全,只在非安全场景使用
  • **SHA-256**:当前推荐的哈希算法,日常开发首选
  • **AES-256-GCM**:推荐使用的对称加密方案
  • **RSA**:适合密钥交换和数字签名
  • 哈希不是加密,加密不是哈希,两者不能相互替代
  • 本站的哈希计算工具支持 MD5、SHA-1、SHA-256、SHA-384、SHA-512,加解密工具支持 AES、DES、RSA,可以在线验证和测试这些算法。