密码学(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.常见类型

算法输出长度(位)输出长度(字节)分组长度(位)
MD5128 bit16 bytes
SHA-1160 bit20 bytes
RipeMD-160160 bit20 bytes
SHA-256256 bit32 bytes
SHA-512512 bit64 bytes
SM3(杂凑算法)256 bit32 bytes512 bit
sha1WithRSAEncryption

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

3.常见问题:碰撞

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

2.对称加密算法

1.概念

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

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

2.常见类型

算法输出长度(位)输出长度(字节)分组(密钥)长度
AES128 bit16 bytes
DES160 bit20 bytes56 bit
3DES160 bit20 bytes
SM1(分组加密)512 bit64 bytes128 bit
SM4(分组加密)512 bit64 bytes128 bit

3.常见问题

3.非对称算法

1.概念

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

2.常见类型

算法输出长度(位)输出长度(字节)密钥长度
RSA12816 bytes
SM216020 bytes256 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

  • 17
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值