一个人慢慢进步的方寸之地~|

小七闲

园龄:6年3个月粉丝:2关注:7

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

叨两句

密码系列文章,是对接第三方接口时接触到加解密,但是知识体系较乱。希望能整理常见证书、密钥、加解密方式这方面知识,用于简单理解和快速区分。
有些缺漏和待补充,后续慢慢完善。有任何问题欢迎提出,便于及时修正

前言

在需要对数据进行加解密或者加验签时,第一步要做的是确认所用的算法。
按照算法的处理方式(除了那些自定义的方式),主要可以分为:摘要算法、对称加密算法、非对称加密算法。

算法使用场景例子:
A和B之间私密通话,但是有窃听者C。

1、明文通话:AB的信息可以轻易被C获取、修改和伪装。
2、对称加密通话:AB用同一密钥加解密,只要密钥不泄露,就是安全的。如果泄露了,因为有了密钥,数据很好伪装,和明文通话一样。
3、非对称加密通话:

  • 1)A生成一对公私钥,发公钥给B。B也生成一对公私钥,发公钥给A。公钥在这个过程中可以分发给更多人使用,私钥仅生成方保留。
  • 2)发信息时,用对方的公钥加密,再用自己的私钥对加密数据进行签名,发送信息。
  • 3)接收消息时,用对方的公钥验证签名(确保消息的来源方是对的),再用自己的私钥解密信息。
    4、摘要+非对称加密通话:在加密后的信息过大时,因为签名算法十分复杂,直接对加密结果签名很耗时耗力。所以先加密,中间再对加密信息进行摘要,再对摘要结果进行签名。

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. 加解密过程是可逆的。需要加解密的人都有同一密钥,所以其中任一使用者的泄露都会导致安全隐患。
3.用途:因为双发密钥一致,一般用于加密。如果用于签名时,因为双方密钥一致,无法区分,如果一定要用于签名,独有性的部分要靠其他的算法。

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

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.概念

1.当加解密使用不同的密钥时(但必须是成对的),该算法为非对称算法。
2.公钥加密时,需要用-配对的私钥解密。私钥加签时,需要用配对的公钥验签。一般ab双方要互相生成一套密钥,将公钥发送给对方。
3.用途:加解密、加验签。公钥可分发多用户,主要注意保存私钥。

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
5、https://segmentfault.com/a/1190000024523772

本文作者:小七闲

本文链接:https://www.cnblogs.com/inkqx/p/17469190.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小七闲  阅读(265)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 2020.8.30 GIN
  2. 2 久遠 ~光と波の記憶~(Arrange Version) 松枝賀子 / 江口貴勅
2020.8.30 - GIN
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.