开发技能SSM & SpringSecurity加解密算法加密类型概述

加密是一种保护数据安全的重要技术,广泛应用于用户登录、数据传输和信息通信等场景。根据加密方式和用途,加密算法主要分为以下几种类型:

哈希(Hash)、散列、摘要算法

MAC

HMAC

关键区别

  • MD5、SHA1:不需要密钥。任何人都能计算。主要用于完整性校验(文件没被意外改坏)或快速查找(如哈希表)。
  • HMAC-MD5、HMAC-SHA1:需要密钥。只有知道密钥的人才能计算和验证。主要用于消息认证(验证消息确实是发送方发出的、且未被篡改)。
算法/术语是否是一类?需要密钥吗?主要用途安全性状态
哈希/散列/摘要算法是,同义词完整性校验、快速查找、数字签名基础视具体算法而定
MD5具体算法曾用于文件校验、密码存储不安全,已攻破
SHA1具体算法曾用于Git、SSL证书、版本控制不安全,已攻破
MAC一类算法总称消息认证、数据源认证视具体实现而定
HMAC具体构造方法消息认证(常见于API签名、JWT等)仍然安全(即使底层用MD5/SHA1)
 MD5、SHA1 —— 是具体的哈希算法
  • 它们是这类算法的具体实现,就像“汽车”这个类别下的“奔驰”和“宝马”。
  • MD5:输出128位哈希值。已被证明不安全(容易人为制造碰撞),不应再用于安全相关场景。
  • SHA1:输出160位哈希值。也已被证明不安全,主流浏览器和软件已逐步淘汰它。
  • 替代品:现在推荐使用 SHA-2 家族(如 SHA-256、SHA-512)或 SHA-3。
MAC 和 HMAC —— 是带密钥的哈希

这里需要区分一下:

  • MAC(消息认证码):不是一个具体的算法,而是一类算法的总称。它需要一个密钥参与计算,输出结果叫 MAC 值。没有密钥,无法验证。MAC 可以基于哈希算法实现,也可以基于分组密码等其他方式实现。
  • HMAC(哈希消息认证码):是 MAC 的一种具体实现方式,它专门利用现有的哈希算法(如 MD5、SHA1、SHA256)来构造 MAC。

对称加密和非对称加密的区别

Base64编码

Base64是一种编码方式,不属于加密算法,但常用于数据传输。它将二进制数据转换为可打印字符,便于在HTTP等环境中传递。

各类算法比较

摘要算法不可逆,适合验证数据完整性。对称加密速度快但密钥管理复杂,适合大数据加密。非对称加密安全性高但速度较慢,适合小数据加密和密钥交换。选择加密算法时需根据具体场景权衡性能与安全性。

Built with LogoFlowershow