从宏观角度讲述什么是加密算法

今天看到一篇文章《什么是加密算法》,图文并茂,浅显易懂。俗话说:“好记性不如烂笔头”,所以先记下来,如果你看到这篇文章也希望对你有所帮助。嘎嘎嘎...
在古罗马时期的战争中就已经诞生了加密算法,大规模战争中,部队之间需要信使来传递重要的情报。
从宏观角度讲述什么是加密算法
可是,一旦信使被敌军抓获,重要的军事情报就完全暴露给了敌方。
从宏观角度讲述什么是加密算法
甚至,狡猾的敌人有可能篡改军事情报,并收买信使把假情报传递给我方部队。
从宏观角度讲述什么是加密算法
这样一来,我方部队就完全落入到敌方的陷阱中。这种拦截并篡改信息的手法,在网络安全领域被称为中间人攻击
怎样防止这种情况的发生呢?不让信使被敌人抓获?这个肯定无法避免。
那么我们不妨换个角度,让敌人即使接货了军事情报,也看不懂里面的内容,这就是对信息的加密
从宏观角度讲述什么是加密算法
如今在信息安全领域,有各种各样的加密算法凝聚了计算机科学家们的智慧。从宏观上来看,这些加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法
1、哈希算法
从严格意义上来讲,哈希算法并不属于加密算法,但在信息安全领域起到了很重要的作用。
哈希算法能做什么呢?其中一个重要的作用就是生成信息摘要,用以验证原信息的完整性和来源的可靠性。
让我们举个栗子:
在某个互联网应用上,由用户下单买东西,于是应用需要通知支付宝,并告诉支付宝商户ID、支付金额等信息。
从宏观角度讲述什么是加密算法
支付宝怎么知道这个请求是真的来自该应用,并且没有被篡改呢?
请求的发送方把所有参数,外加双方约定的Key(例子中Key=abc)拼接起来,并利用哈希算法生成了一段信息摘要:
Hash(1234_100_abc) = 948569CD3466451F
而请求的接收方在接收到参数和摘要之后,按照同样的规则,也把参数和Key拼接起来并生成摘要:
Hash(1234_100_abc) = 948569CD3466451F
如果最终发现两端信息摘要一致,证明信息没有被篡改,并且来源确实是该互联网应用。(只要参数修改了一点点,或者Key不一样,那么生成的信息摘要就会完全不同)
生成信息摘要的过程叫做签名,验证信息摘要的过程叫做验签
哈希算法包含哪些具体的算法呢?其中最著名的当属MD5算法。后来,人们觉得MD5算法生成的信息摘要太短(128位),不够安全,于是又有了SHA系列算法
2、对称加密算法
好戏算法可以解决验签的问题,却无法解决明文加密的问题。这时候,就需要真正的算法出场了。
那么,什么是对称加密算法呢?这个概念很好理解:
从宏观角度讲述什么是加密算法
如图所示,一段明文通过密钥进行加密,可以生成一段密文;这段密文通过同样的密钥进行解密,可以还原成明文。这样一来,只要双方事先约定好了密钥,就可以使用密文进行通信。
除了通信过程中的加密以外,数据库存储的敏感信息也可以通过各种方式进行加密。这样即使数据泄露出去,也都是密文。
对称加密包含哪些具体的算法呢?在早期,人使用DES算法进行加密;后来,人们觉得DES不够安全,发明了3DES算法;而如今,最为流行的对称加密算法是AES算法
对称加密算法的好处是加密解密的效率比较高。响应的,对称算法的缺点是不够安全。为什么呢?通信双方约定的密钥是相同的,只要密钥本身被任何一方泄露出去,通信的密文就会被破解;此外,在双方简历通信之初,服务器把密钥告诉客户端的时候,也有被拦截到的危险。
为了解决这一痛点,非对称加密就登场了。
3、非对称加密算法
什么又是非对称加密呢?在刚刚接触到的时候,或许你会觉得这种算法有些古怪:
从宏观角度讲述什么是加密算法
如图所示,在非对称加密中存在一对密钥,其中一个叫做公钥,另一个叫做私钥。在加密解密的过程中,我们既可以使用公钥加密明文,使用私钥解密密文;也可以使用私钥加密明文,使用公钥解密密文。
这样设计有什么好处呢?看看通信的过程就知道了:
1、在双方简历通信的时候,服务端只要把公钥告诉给客户端,自己保留私钥。
2、客户端利用获取到的公钥。加密另一个密钥X(可以是对称加密的密钥),发送给服务端。
3、服务端获得消息后,用自己的私钥解密,得到里面隐含的密钥X。
4、从此以后,双方可以利用密钥X进行对称加密的通信了。
从宏观角度讲述什么是加密算法
在这个过程中,即使公钥被第三方截获,甚至后续所有的通信都被截获,第三方也无法进行破解。因为第二步利用公钥加密的消息,只有私钥才能解开,所以第三方永远无法知道密钥X是什么。
非对称加密算法的代表有哪些呢?最著名的当属RSA算法
既然非对称加密这么强大,是不是没有缺点呢?也不是,非对称加密最大的问题是性能较差,无法应用于长期的通信。

php
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!