【 双向加密】
双向加密是加密算法中最常用的,一方将明文数据进行加密,另外一方可以使用一定的手段如算法和密钥,将密文还原为明文数据,所以称之为双向的 。
双向加密里又分为对称加密和非对称加密 。
1、 对称加密(Symmetric Key Encryption)
对称加密使用一个密钥,给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同 。解密时,使用的密钥与加密密钥相同 。
在对称加密中,分为分组加密和序列密码 。
▲序列密码
流加密(stream cyphers),一次加密明文中的一个位 。是指利用少量的密钥(制乱元素)通过某种复杂的运算(密码算法)产生大量的伪随机位流,用于对明文位流的加密 。解密是指用同样的密钥和密码算法及与加密相同的伪随机位流,用以还原明文位流 。
▲ 分组加密
块加密(block cyphers),一次加密明文中的一个块 。是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运算),还原成明文组 。
TODO 这两者的比较补充一下,流加密讲的太少了,这个东西材料也不多 。
分组加密又有四种不同的模式,分别如下:
? 电子密码本模式 Electronic Code Book(ECB)
这个是最简单的模式,就是将原来的明文给按照固定的长度(也就是密钥的长度)给拆开来,然后用相同的密钥进行加密 。
缺点是只适合加密小消息,如果明文块重复的多,密文里也会有很多的重复,它的明文和密文的对应关系是一致的 。

文章插图
? 加密块链模式 Cipher Block Chaining(CBC)
前面一个加密块输出的密文与下一个要加密的明文块进行异或操作,将计算结果再用密钥进行加密得到密文 。这是一个迭代的过程,所以会在开头需要一个初始的向量 。这个的优势就是密文和明文不再是一一对应的关系,每个相同的明文都掺杂了不同的向量 。

文章插图
? 加密反馈模式 Cipher Feedback Mode(CFB)
首先就是你自己有一个iv初始向量,对整个iv进行加密,然后取前面的高n位,与明文块的前n位进行异或操作,得到了n位的密文块0 。然后这个被传入到下一个加密的操作中,首先将原来的iv左移n位,右边空出来的位置,就放密文块0,如此反复 。

文章插图
? 输出反馈模式 Output Feedback Mode(OFB)
这个和CFB很类似,唯一的区别就是填入的是K的高n位,而不是前一个密文块的内容 。

文章插图
【暗藏在QQ邮箱、百度网盘的国密算法到底是如何实现的?】
2、非对称加密(Asymmetric Key Encryption)
公开密钥加密(Public-key cryptography),也称为非对称加密(asymmetric cryptography),是密码学的一种算法,它需要两个密钥,一个是公开密钥,另一个是私有密钥;一个用作加密的时候,另一个则用作解密 。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密 。由于加密和解密需要两个不同的密钥,故被称为非对称加密 。
? 公钥(Publish Key)加密,私钥(Private Key)解密
这个过程就相当于是A和B要通信,B把公钥发给A,或者直接公开在网上,你要给我发消息,就请用密钥C来加密,然后B收到加密后的消息c(x)后,就用自己的私钥来解密,得到实际的明文消息x 。
比喻成数学公式,就是【d(c(x)) = x】,d就是私钥,只有接收者自己知道 。
? 私钥(Private Key)加密,公钥(Publish Key)解密
你自己发一个消息的时候,用你的私钥去加密这个消息,然后将你的公钥公开给所有人,任何人都可以用这个公钥来解密你的消息 。解不开说明私钥不对,也就是相当于,要证明这个消息是你发的,就是用公钥解开密文 。
接收方可以通过此来判断消息途中是否有被篡改,也可防止用户抵赖,所以这个也被称之为数字签名,因为只有你才能把明文a加密成b,且b可以被公钥解密出来得到明文a,能够做到这件事情的只有你,其他人都不行 。
以上的两种非对称加密的方式,更合适在互联网环境下使用,若采用对称加密,你无法去保证传输密钥的过程的安全性 。
推荐阅读
- 刘姥姥抽柴火的故事 刘姥姥雪地抽柴暗示了什么
- 古墓派有哪两件厉害的独门暗器
- 脸色暗黄怎么调理 面容暗黄原因和调理方法
- 国色天香的秘方,6种名茶里暗藏的防病治病秘方
- 欧洲的中世纪被称为黑暗的中世纪 为什么中世纪欧洲被称为黑暗的中世纪
- 燕麦|皮肤很重要,而素颜状态绝对不能出油,一出油整个人就显得很暗淡
- 太阳日冕层 太阳日冕层的太阳活动
- 外星人就在你身边 外星人隐藏在人类中间
- 通俗的说,暗物质就是宇宙中 暗物质是指宇宙中
- 月球的另一面有没有外星人 外星人藏在月球背面是真的吗
