加密算法介绍

296 阅读4分钟

这是我参与8月更文挑战的第31天,活动详情查看: 8月更文挑战

加密在我们软件开发中用的比较多,最常见的就是用户的密码采用加密后保存到数据库中,这样的话即使我们的数据库数据泄露,由于关键信息是采取的加密存储的,别人拿到也没有用,但是有暴力破解的方法,通过不停的运算来比对加密的密文,最终破解加密的密文,所以加密算法的好坏,就觉得了密文被暴力破解时间长短。加密算法常用的有:散列、对称加密、非对称加密这三大类。

散列

  • 概述

散列加密是对信息生成固定的摘要,该算法是使用散列函数将信息压缩成摘要字符串,使的如果信息被修改,则生成的字符串就会发生改变,这样的话,就会认为该信息在传输过程中被人恶意串改,如果是软件的话,可能在其中注入了病毒。 散列在软件开发中用的比较常见的场景:密码加密存储;信息传输防止被串改,一般在传输信息的过程中,也要将该信息的散列值一起传输,当接收到数据后,根据相同的散列算法来生成散列值与收到的信息做对比,如果不一致则信息被串改;文件校验场景,从网站下下载文件的时候,官方网站都会放置签名(MD5、SHA)串,当我们下载文件后,可以在本地得出对应的签名,然后与官方的相比较是否一致,如果不一致,则认为软件被串改,就代表该软件不可信任。 image.png image.png

  • 常见算法

MD5、SHA(128、256)系列

名称安全性速度
SHA-1
MD5

对称加密

  • 概述

加密和解密都用的是同一个密钥,相当于一把锁,钥匙都一样,性能比非对称加密性能高,常用于数据通信效率比较高。 算法.jpg

  • 常见算法

常见对称加密算法主要有DES、3DES、AES DES算法在生活中用的比较多,例如:POS,ATM,高速公路收费站用的比较多,用来实现关键数据的加密,防止数据在传输中被窃取; 3DES是DES加密算法的另外一种模式,相对与DES算法更加安全; AES,是下一代的加密算法标准,速度快,安全级别更高

名称密钥长度运行速度安全性资源消耗
DES56较快
3DES112,168
AES128,192,256

非对称加密

  • 概述

非对称加密相比对称加密,加密和解密的钥匙不是同一把,分为公钥和私钥,私钥在自己的手里,公钥是公开的,相当于两把钥匙,一个用于加密,另一个用于解密。非对称加密的安全性比对称加密的安全性高,但是相对性能比较低。 算法.png

  • 常见算法

非对称加密算法常用的有:RSA,ECC

名称运行速度安全性资源消耗
RSA
ECC

散列算法、对称加密、非对称加密在HTTPS中三者都使用了。在正式传输文件之前,先是采用非对称加密约定一个加密的key,使用该key最为在后面传输内容的对称加密的key,在每次传输内容都采用散列算法签名。 未命名文件 (3).png HTTPS请求过程描述:

  1. 客户端向服务器端发送请求,认证CA证书,约定后续的加密方式
  2. 客户端确认证书没问题后,然后生成一个新的46字节随机数,通过服务器端给的数字证书的公钥加密这个随机数,发生给服务端;服务端收到密文后,采用自己存放的私钥解密密文,获取客户端发生的随机数,作为后续对称加密的key【非对称加密】
  3. 在客户端与服务端验证完成后,后续发送数据采用对称加密方式传输数据 【对称加密-RSA】
  4. 客户端与服务端每次传输的内容都采用SHA来生成签名【散列-SHA】

image.png