AES

  • 基本概念:AES (Advanced Encryption Standard,高级加密标准) 是目前全球通用的对称加密算法 ,替代了安全性不足的 DES (Data Encryption Standard) 算法。
  • 特点:
    • 加密和解密使用相同的密钥
    • 加解密速度快,效率高,适合加密大量数据。
    • 是一种分组密码,支持 128、192、256 位三种密钥长度。
  • 安全特性:
    • 目前没有对 AES 有效的密码分析攻击,只要密钥安全,其本身被认为是极其安全的。

RSA

  • 基本概念:RSA (Rivest-Shamir-Adleman) 由三位数学家Rivest、Shamir、Adleman提出,核心基于 “大数分解难题”(将极大的合数分解为两个质数的乘积,计算难度极高)非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。
  • 特点:
    • 使用一对密钥:公钥用于加密,私钥用于解密。
    • 加密和解密速度较慢,不适合加密大量数据。
    • 广泛应用于 SSL/TLS 握手、数字签名、软件许可证验证等场景。
  • 安全特性:
    • 安全性基于大整数质因数分解难题,即将一个大的合数分解为其两个质因数在计算上是不可行的。

CRC

  • 基本概念:CRC (Cyclic Redundancy Check,循环冗余校验)是一种基于多项式除法的校验算法。
  • 特点:
    • 计算极其迅速,硬件实现简单。
    • 是一种校验码,并非加密算法或密码学哈希函数。

MD5

  • 基本概念: MD5(Message-Digest Algorithm 5)是一种经典哈希函数,能接收任意长度的输入数据,经过一系列特定的哈希运算后,最终生成固定长度的 128 位哈希值,该值通常以 32 位十六进制字符串的形式呈现,便于存储和查看。
  • 特点:
    • 生成 128 位(16 字节)的哈希值。
    • 计算速度非常快。
  • 安全特性:
    • 已被证实不安全,可以人为制造出哈希碰撞(两个不同文件产生相同的 MD5 值)。
    • 不要应用于任何安全场景,如密码存储或证书签名,仅可用于非关键的校验,如检查文件下载是否完整(且无恶意篡改风险时)。

SHA-256

  • 基本概念:SHA - 256(Secure Hash Algorithm 256 - bit)是 SHA - 2 系列哈希算法的一部分,生成 256 位的哈希值。它具有较高的安全性,广泛应用于密码存储、数据完整性验证等方面。相比于 MD5,SHA - 256 更能抵御哈希碰撞攻击。
  • 特点:
    • 属于 SHA-2 家族,生成 256 位(32 字节)的哈希值。
    • 是单向过程,无法从哈希值反推原始数据。
    • 对输入数据的任何微小改动都会产生一个完全不同的哈希值(雪崩效应)。
  • 安全特性:
    • 目前抗碰撞性强,即极难找到两个不同的输入产生相同的哈希值。
    • 比 MD5 和 SHA-1 安全得多,广泛应用于区块链、数字证书和软件完整性校验。

BCrypt

  • 基本概念:自适应密码哈希算法(专门为用户密码存储设计,基于哈希算法并增强安全性),它引入了加盐(salt)机制,生成哈希时会随机生成 “盐值”(通常 128 位),并将盐值嵌入最终的哈希结果中,这使得暴力破解和彩虹表攻击变得更加困难。
  • 特点:
    • 内置加盐机制,能有效抵抗彩虹表攻击。
    • 设计上计算缓慢且可配置成本因子,能随硬件性能提升而增加计算难度,从而抵抗暴力破解。

结尾

以上就是关于常使用的加密算法的全部分享。核心逻辑可以概括为两点:一是加密算法的基本概念;二是加密算法的特点,这也是我对在实际项目中常常使用到的加密算法的总结。

技术从来不是孤立的,每个人的实践场景都可能衍生出新的思路。如果你在相关场景……,如 “SpringSecurity”“SpringBoot”中遇到过类似问题,或者有更优的解决方案,欢迎在评论区留言交流 —— 你的经验或许能帮更多人少走弯路。

感谢读到这里,技术之路漫长,同行者常伴,期待与你下次交流~~

更多推荐