公钥
和私钥
HASH
计算,一般采用SHA1
,SHA2
来获得。注意
:使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功
加密 encryptio
n 与解密 decryption
使用的是同样的密钥 secret key
,对称加密是最快速、最简单的一种加密方式。加密和解密算法是公开的,秘钥必须严格保存,如果秘钥泄露,别人就能够用密文+秘钥
还原成你的明文。
对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于 256bit
。因为密钥越大,加密越强,但加密与解密的过程越慢。如果只用 1bit
来做这个密钥,那黑客们可以先试着用 0 来解密,不行的话就再用 1 解;但如果你的密钥有 1MB 大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间
比如常见的 DES/AES
都是属于对称加密算法。
优点:
算法公开、计算量小、加密速度快、加密效率高
缺点:
秘钥的管理和分发非常困难,不够安全。在数据传送前,发送方和接收方必须商定好秘钥,然后双方都必须要保存好秘钥,如果一方的秘钥被泄露,那么加密信息也就不安全了
非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(简称公钥)和私有密钥(简称私钥),即常说的公钥加密,私钥解密
或私钥加密,公钥解密
。
私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人,非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥
RSA
就是最常用的非对称加密算法
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。
优点:
安全性更高,公钥是公开的,秘钥是自己保存的,不需要将私钥给别人
缺点:
加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
由于非对称加密只是把公钥传给客户端,倘若公钥被中间机构给拦截就会有风险隐患,因此才有了证书秘钥加密
证书秘钥加密采用服务器和客户端双方都能够充分信得过第三方证书认证机构
,首先服务器端会制定一种加密方式,称为公钥,有了公钥后,服务器先不给客户端,而是提交到第三方证书认证机构
,机构先审核,审核通过后,会对公钥进行进行数字签名(签名主要作用就是为了防伪
),然后机构把携带了签名的公钥封装到证书中,把证书发给客户端,证书里面就是包含了数字签名的公钥
如上所言, HTTPS
协议之所以是安全的是因为采用证书加密
会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实:HTTPS
在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段
两个阶段图示:
证书验证阶段:
HTTPS
请求,连接到服务器的443
端口;