前言
有任何问题欢迎提出,便于及时修正
?块加密(分组加密):加密算法无法一次性处理过长的明文,这种情况下,将明文以密钥长度分割,分成一个个固定长度的数据组(块),分别进行加密然后组合,该方式即为块加密,也称分组加密。
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)假设有一张表,存放了常见口令与对应哈希值。如果原始明文是常见口令,很容易通过比对彩虹表哈希值和摘要内容,得到原始信息,这个表就是彩虹表。
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