密码学(1):常见算法分类

发布时间 2023-06-09 14:47:20作者: 小七闲

前言

有任何问题欢迎提出,便于及时修正

?块加密(分组加密):加密算法无法一次性处理过长的明文,这种情况下,将明文以密钥长度分割,分成一个个固定长度的数据组(块),分别进行加密然后组合,该方式即为块加密,也称分组加密。

1.哈希算法(散列算法、摘要算法)

1. 概念

1. Hash算法,翻译为散列算法,音译为哈希算法,也称摘要算法。
2. 用来对任意一组输入数据进行处理,得到一个固定长度摘要的输出。相同的哈希算法,相同的输入会得到相同结果,不同的输入大概率会得到不同结果。
3. 是单向的算法,只能对信息进行加密,却无法解密。一般用于确认数据完整性和防止篡改,例如签名验证、完整性校验、密码存储等。

2.常见类型

算法 输出长度(位) 输出长度(字节) 分组长度(位)
MD5 128 bit 16 bytes
SHA-1 160 bit 20 bytes
RipeMD-160 160 bit 20 bytes
SHA-256 256 bit 32 bytes
SHA-512 512 bit 64 bytes
SM3(杂凑算法) 256 bit 32 bytes 512 bit
sha1WithRSAEncryption

SHA-1 、SHA-256等一般也经常简写为sha1、sha256
sha1WithRSAEncryption = RSA-SHA1

3.常见问题

  1. 碰撞。因为摘要本质是将不定集映射到固定长度的有限集合,所以难免会出现不同输入得到相同输出,这个现象就是碰撞。可见,哈希算法输出长度越长,碰撞概率越低。
  2. 彩虹表破解。
    1)因为相同输入对应结果是相同的,可以暴力穷举破解,但是该方法耗时耗力。
    2)假设有一张表,存放了常见口令与对应哈希值。如果原始明文是常见口令,很容易通过比对彩虹表哈希值和摘要内容,得到原始信息,这个表就是彩虹表。
    3)因此,在用于存放密码哈希值时,可以对原密码加盐,即原密码再加上一串随机数,再对这个值进行哈希,就可以避免用户的常见口令被轻易破解。

2.对称算法

1.概念

1. 当某一算法加解密使用的是同一密钥时,则为对称算法。
2. 加解密过程是可逆的。需要加解密的人都有同一密钥,所以其中任一使用者的泄露都会导致安全隐患。

2.常见类型

算法 输出长度(位) 输出长度(字节) 分组(密钥)长度
AES 128 bit 16 bytes
DES 160 bit 20 bytes 56 bit
3DES 160 bit 20 bytes
SM1(分组加密) 512 bit 64 bytes 128 bit
SM4(分组加密) 512 bit 64 bytes 128 bit

3.常见问题

3.非对称算法

1.概念

当加解密使用不同的密钥时,该算法为非对称算法。公钥可分发多用户,主要注意保存私钥。

2.常见类型

算法 输出长度(位) 输出长度(字节) 密钥长度
RSA 128 16 bytes
SM2 160 20 bytes 256 bit

3.常见问题

参考链接

1、https://www.liaoxuefeng.com/wiki/1252599548343744/1304227729113121
2、https://www.liaoxuefeng.com/wiki/1022910821149312/1023025778520640
3、https://www.cnblogs.com/coolYuan/p/8630280.html
4、https://zhuanlan.zhihu.com/p/132352160