常见加密算法总结

加密算法是一种用数学方法对数据进行变换的技术,其核心目的在于保护数据的安全,防止被未经授权的人读取或修改。加密算法主要可以分为三大类:对称加密算法、非对称加密算法和哈希算法(也常被称为摘要算法)。

在日常开发中,有很多场景需要用到加密算法:

  • 保存在数据库中的密码需要加盐之后使用哈希算法(比如 BCrypt)进行加密。这样即使数据库被攻击,攻击者也难以直接获取用户的原始密码。通过比较用户输入密码的哈希值和数据库保存的哈希值是否一致,能够安全地判断密码是否正确。
  • 保存在数据库中的银行卡号、身份号这类敏感数据需要使用对称加密算法(比如 AES)保存。对称加密算法的加密和解密使用相同的密钥,具有高效的加密和解密速度,适合对大量敏感数据进行加密存储。
  • 网络传输的敏感数据比如银行卡号、身份号需要用 HTTPS + 非对称加密算法(如 RSA)来保证传输数据的安全性。HTTPS 结合非对称加密算法,在建立安全连接的过程中,使用非对称加密算法交换密钥,然后使用对称加密算法进行数据传输,确保数据在网络传输过程中不被窃取或篡改。

需要注意的是,严格上来说,哈希算法其实不属于加密算法,只是可以用到某些加密场景中(例如密码加密),两者可以看作是并列关系。加密算法通常指的是可以将明文转换为密文,并且能够通过某种方式(如密钥)再将密文还原为明文的算法。而哈希算法是一种单向过程,它将输入信息转换成一个固定长度的、看似随机的哈希值,但这个过程是不可逆的,也就是说,不能从哈希值还原出原始信息。

哈希算法

哈希算法也叫散列函数或摘要算法,它的作用是对任意长度的数据生成一个固定长度的唯一标识,也叫哈希值、散列值或消息摘要(后文统称为哈希值)。

在实际应用中,哈希算法有很多重要的用途:

  • 当保存密码到数据库时,使用哈希算法进行加密,可以有效保护用户密码的安全。
  • 我们下载一个文件时,可以通过比较文件的哈希值和官方提供的哈希值是否一致,来判断文件是否被篡改或损坏。

这种算法具有以下显著特点:

  • 不可逆:不能从哈希值还原出原始数据。
  • 敏感性:原始数据的任何改变都会导致哈希值的巨大变化。

哈希算法可以简单分为两类:

  • 加密哈希算法:安全性较高的哈希算法,它可以提供一定的数据完整性保护和数据防篡改能力,能够抵御一定的攻击手段,安全性相对较高,但性能较差,适用于对安全性要求较高的场景。例如 SHA2、SHA3、SM3、RIPEMD-160、BLAKE2、SipHash 等等。
  • 非加密哈希算法:安全性相对较低的哈希算法,易受到暴力破解、冲突攻击等攻击手段的影响,但性能较高,适用于对安全性没有要求的业务场景。例如 CRC32、MurMurHash、SipHash 等等。

除了这两种之外,还有一些特殊的哈希算法:

  • MD (Message Digest,消息摘要算法):MD2、MD4、MD5 等,已经不被推荐使用。因为随着计算能力的提高,这些算法容易被破解。
  • SHA (Secure Hash Algorithm,安全哈希算法):SHA-1 系列安全性低,SHA2,SHA3 系列安全性较高。不同系列的 SHA 算法在安全性和性能上有所差异,可以根据具体需求选择合适的算法。
  • 国密算法:例如 SM2、SM3、SM4,其中 SM2 为非对称加密算法,SM4 为对称加密算法,SM3 为哈希算法(安全性及效率和 SHA-256 相当,但更适合国内的应用环境)。国密算法是我国自主研发的密码算法体系,在保障国家信息安全方面具有重要意义。
  • Bcrypt (密码哈希算法):基于 Blowfish 加密算法的密码哈希算法,专门为密码加密而设计,安全性高,属于慢哈希算法。其特点是计算速度相对较慢,这使得暴力破解更加困难,从而提高了密码的安全性。
  • MAC (Message Authentication Code,消息认证码算法):HMAC 是一种基于哈希的 MAC,可以与任何安全的哈希算法结合使用,例如 SHA-256。MAC 算法通过使用密钥和哈希算法,不仅可以验证数据的完整性,还可以验证数据的来源,防止数据被伪造或篡改。
  • CRC (Cyclic Redundancy Check,循环冗余校验):CRC32 是一种 CRC 算法,它的特点是生成 32 位的校验值,通常用于数据完整性校验、文件校验等场景。CRC 算法虽然不是严格意义上的加密算法,但在数据传输和存储中可以用于检测数据是否发生错误。
  • SipHash:加密哈希算法,它的设计目的是在速度和安全性之间达到一个平衡,用于防御哈希泛洪 DoS 攻击。Rust 默认使用 SipHash 作为哈希算法,从 Redis4.0 开始,哈希算法被替换为 SipHash。
  • MurMurHash:经典快速的非加密哈希算法,目前最新的版本是 MurMurHash3,可以生成 32 位或者 128 位哈希值。

哈希算法一般是不需要密钥的,但也存在部分特殊哈希算法需要密钥。例如,MAC 和 SipHash 就是一种基于密钥的哈希算法,它在哈希算法的基础上增加了一个密钥,使得只有知道密钥的人才能验证数据的完整性和来源。这样可以进一步提高数据的安全性,防止未经授权的人篡改或伪造数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值