携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情 >>
什么是加密?
加密就是把消息用某种方式转换成谁也看不懂的乱码,只有掌握特殊 “钥匙” 的人才能再转换出原始文本。钥匙叫做密钥,加密前的消息叫做明文,加密后的乱码叫密文,
加密是将信息转换为密码的技术过程,以使您发送、接收或存储的数据变得晦涩难懂。本质上,信息发送方先使用一种算法对数据进行加密,然后接收方使用解密密钥对数据进行解密。包含在未加密文件中的未加密消息称为“明文”,而加密消息称为“密文”,使用密钥还原明文的过程叫解密,加密解密的过程叫做加密算法。
\
加密可以分为两大类:对称加密和非对称加密。
什么是对称加密?
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法,过程如下图所示:
\
优点:
因为对称加密原理使用的是对二进制数据进行异或操作,处理二进制数据对计算机友好,因此对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。
缺点:
上面的对称加密看起来好像实现了机密性,但是其中一个很大的问题就是如何把密钥安全的传递给对方,术语叫做密钥交换, 因为加密解密使用的是同一个密钥,一旦密钥泄露就会导致安全性几乎为0,另外对于实际应用场景,为了避免单一的密钥被攻破,从而导致所有的加密数据被攻破,对于不同的数据,我们一般会使用不同的密钥进行加密,这样虽然提高了安全性,但也增加了密钥管理的难度。
什么是非对称加密?
因此就有了非对称加密可以用于解决以上 密钥交换 的问题。网站保管私钥,在网上分发公钥。公钥对原文加密,传输加密后的密文给网站,网站使用私钥解密出密文得到原文。黑客没有私钥,所以解不出密文。由于加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
优点
安全性更高,公钥是公开的,私钥是自己保存的,不需要将私钥提供给别人。
缺点
非对称加密的算法设计比对称算法难得多,常见的有几种,比如 DH、DSA、RSA、ECC 等。RSA 的安全性基于 “整数分解” 的数学难题,使用两个超大质数的乘积作为生成密钥的材料。想要从公钥推算出私钥是非常困难的。
质数(又称素数),是指在大于1的自然数中,除了1和它本身外,不能被其他自然数整除(除0以外)的数称之为素数(质数)。
由于非对称加密使用的是非对称加密算法加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
什么是混合加密?
虽然非对称加密解决了密钥交换的难题,但是又带来了新的问题,那是否有其他的加密算法来解决上述的问题呢?答案显然是有的,我们可以使用将上述2种加密的方式混合一下取长补短。过程如下所示:
流程:
- 借助对称加密速度快的优点,对数据进行加密
- 然后使用非对称加密的公钥对对称密钥本身做加密
- 将加密后的数据和加密后的对称密钥一起发送
- 接收方使用私钥解密出对称密钥
- 使用对称密钥解密密文数据
总结
结合对称加密和非对称加密我们最后得出了最佳的解决方式,这种方式在很多应用场景都有类似的,比如混合应用,如果感兴趣准备下篇就介绍混合有应用的原理。