当前位置:首页 > 短网址资讯 > 正文内容

FT12短网址:深入浅出,解析AES算法

www.ft12.com8年前 (2017-07-25)短网址资讯2739

AES算法

高档加密标准(Advanced Encryption Standard,AES)是美帝2001年发布的块加密算法,AES是归于块加密算法结构中的一个组件,所以了解AES的关键是搞清楚块加密算法。(块加密算法是一个“框”,AES只是“框”中的一个东西)

块加密算法作业原理

块加密算法也叫分组密码作业形式(block mode of operation)它会把明文按等长的块(Block)分组然后使用某种加密算法进行加密——AES就归于“某种加密算法”中的一种。用一幅图表明二者关系:

块加密算法有三个关键部分

  • 填充方法,负责把明文切分红一块一块的。块加密请求数据一定要符合块巨细,以AES为例它规则每个数据块的巨细是128个bit位(16字节),假如数据缺乏16字节那么必须**填充**到16字节。填充的数据是字节长度,比方一个5字节的块需要填充到16个字节,那么剩余的9个字节就全部写上09 09 09……。 PKCS5Padding和PKCS7Padding是别离出在不同标准的两个标准,PKCS5规则了块巨细是8字节;PKCS7没有约束。因为AES已经约束了块的巨细,所以它们两个在AES里边本来没有啥区别。所以在Java里边只提供了AES+PKC5Padding(AES+PKCS7Padding,这个说法不对,AES已经约束了块巨细)。

  • 加密算法,负责对每一块的明文进行加密。对算法输入明文和密钥,算法输出加密后的密文块,多见的算法是AES、DES。

  • 作业方法,块加密十分灵活使用不同的作业形式能够完成**并行、密文可变(每次加密得到的密文都不一样)、容错**

块加密算法的五种作业方法

按照块加密算法的不同作业形式多见的有5种(为了简化疑问我只贴加密进程):

  • 电子密码本(ECB,Electronic codebook)

Key是密钥,Plaintext是明文,中心的Block Cipher Encryption是加密算法(比方AES即是其中一种)。密钥和明文作为输入经过加密以后得到密文——Ciphertext。ECB作业形式十分简略,能够并行处理;一个线程负责把数据切分红N块后由N个线程同时进行加密。它的缺点是一样的密钥每次执行加密出来的数据都是一样的。正常人看——比方我,这太正常了,可是“密码专家”们认为这太弱鸡了(囧)。所以他们设计了一种格外的算法,经过一个叫“初始向量(IV,Initialization Vector)”的变量让每次进行加密得到的密文都不一样(即便密钥一样)。剩余的4种块作业形式都归于这种牛B的类型。

  • 密码块链接(CBC,Cipher-block chaining)

这里的输入多了一个叫Initialization Vector(IV)的变量;明文和IV异或以后经过作为加密算法的一个变量输入,密钥作为另一个变量输入。CBC加密算法是一个串行算法,第二块的加密依赖于榜首块密文作为IV。所以核算它的时分只能按部就班一块一块的核算。

  • 密文反应(CFB,Cipher feedback)

之前的块加密都没有处理容错疑问——假如我一个数据块坏掉了那么能不能解密出其他的数据块。所以就有了CFB作业形式,注意调查上图,解密的时分假如榜首个密文块损坏那么能够无视这块内容,直接用第二个密文作为输入对第三个密文块进行解密

  • 输出反应形式(OFB,Output feedback)

CBC虽然狂屌炸(每次都能算出不同的密文)可是不能并行,对于“时间即是金钱”的核算机来说是无法容忍的。所以就有了榜首次改善——OFB。注意IV和密钥经过加密后这里是能够并行的,其中一个线程用于和明文的异或;一个线程能够立马核算“下次”加密。

  • 计数器形式(CTR,Counter mode)

OFB算法的并行度太低,只是完成一部分并行,所以就有了第二次改善——CTR算法,同时保证了并行度和密文可变性CTR算法中的IV变成了两部分,榜首个是Nonce能够是一个随机序列,第二部分是计数器(Countter),是一个递加的数字。所以加密的时分经过组合Nonce和核算器就能够对得到有规则可是不一样的(每次密文都不同的关键是IV的可变)“IV”

总结

从三个维度了解五种作业形式——密文是不是固定、是不是能够并行、有没有容错

  • ECB密文固定,全并行

  • CBC密文可变,不行并行

  • CFB密文容错,密文可变,不行并行

  • OFB密文可变,部分并行

  • CTR密文可变,全并行

需要注意的是除非数据量格外大不然我们不用在乎是不是并行;容错在小数据量的时分也凸显不出效果,所以CBC一般是最佳的挑选。

如何跨言语

很多朋友都碰到一个言语写的AES加密在另个一言语解密不了的疑问,究其原因是因为底子没有了解AES的作业形式(也许即是Google了一下AES加密,然后代码贴上收工)。所以我觉得跨言语的榜首步不是找到一种能在一切言语通用的作业形式——一切作业形式每个言语几乎都支持;而是搞清楚你加密出来的数据是那种作业形式,有没有用到IV?IV是经过啥方法传递给对方的?比方下面的Java代码:

我使用了CBC加密形式,这种形式涉及到IV,我们能够用一个固定的IV(比方用key作为IV)——可是意味着没有了CBC的优点,密文可变。所以我用一个随机16字节作为IV,回来的时分把它作为榜首个数据块;解密的时分只要取出榜首个数据块作为IV,然后再对余下的数据进行解密。


假如我们不指定IV参数(init函数的第三个参数),那么iv即是一个随机数。Java是不会主动把IV附加到密文上,所以这种加密出来的数据是谁也没有办法解出来的。




扫描二维码推送至手机访问。

版权声明:本文由短链接发布,如需转载请注明出处。

本文链接:https://www.ft12.com/article_346.html

标签: AES算法
分享给朋友:

相关文章

暴涨520万倍,比特币还能买吗?

暴涨520万倍,比特币还能买吗?

暴涨520万倍,比特币还能买吗?原上草最近,比特币疯狂上涨,很多网友纷纷来信咨询,问草哥还能不能买。前几天,比特别价格首次突破4000美元,相当于人民币接近3万元一枚。2009年刚出来的时候,1美元可以买1300枚比特币,如今价值超过400...

短网址生成器哪个好用?多维度对比

目前市面上很多各式各样的短网址生成器,但是,到底哪个生成器最好用呢?首先,我们要从各个方面去分析。其一,短网址的打开速度和便利性。ft12短网址在这方面就有得天独厚的优势。他集合了u6.gg, rrd.me , c7.gg ,kks.me...

短网址和二维码在共享单车扫码开车上的应用

如果我问大家现在城市和以前的城市最大的变化是什么,估计大部分人会不假思索的想到共享单车。目前共享单车正以不可阻挡之势席卷全国,大街上以及城市的每一个角落正在被ofo、摩拜单车、小鸣单车等等所占领。共享单车这项期初并不被看好的项目,正在逐渐改...

跳水女王陈若琳创业 放下5块金牌做起护眼灯

【亿邦动力网讯】台封王,参加三届奥运会拿了5块金牌,成功实现跳水"大满贯"的陈若琳,金牌数目更超越师姐伏明霞。去年,24岁的她发了条微博,淡然宣布退役。退役后的陈若琳需要一个新的开始新的方向。陈若琳找到了同样热爱公益的迟...

中国集成电路产业内忧外患,苦情戏还是励志故事?

据智研咨询最新数据显现:2017年6月我国集成电路产值为1,450,000.00万块,同比增加23.4%;2017年1-6月止累计我国集成电路产值为7,440,000.00万块,同比增加23.8%。从产值来看,江苏独占鳌头,无论是6月份单月...

浅析无人驾驶技术未来发展的六大方向

浅析无人驾驶技术未来发展的六大方向

[ FT12短网址资讯 ] 许多创业公司和大型公司的终极目标是改动上个世纪的交通形式,从私人具有轿车转向同享无人驾驶车队,从而依照需要使用轿车。这种愿景经常与内燃机向电动轿车的转移融合起来。科技一直以来都是轿车研发的关键,但过去几...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。