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

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

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

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算法
分享给朋友:

相关文章

如何用Python从海量文本抽取主题?

你在工作、学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑间观其大略。本文使用Python对超过1000条文本做主题抽取,一步步带你体会非监督机器学习LDA方法的魅力。想不想试试呢...

揭秘淘宝漏洞,灰色收益每月30000+

揭秘淘宝漏洞,灰色收益每月30000+

本文和大家谈谈如何利用七天无理由退货、运费险两大游戏规则之间的漏洞,实现日赚千元,分享本文的目的仅作揭露,请勿模仿操作。在淘宝网运费险规则中,买家的保费根据赔付金额按5%收取,比如保费0.5元、0.6元,对应的保额是10元、12元。这样在收...

FT12短网址资讯:Windows系统补丁怎么打才最合适

FT12短网址资讯:Windows系统补丁怎么打才最合适

近期在全球爆发的WannaCry比特币勒索病毒,重新让用户意识到了Windows系统打补丁的重要性。我个人在很早的时候就非常看重打补丁的意义。可是在这次勒索病毒爆发之前,国内绝大多数用户的看法无非就是这些:不要打补丁,只会越打越卡。Win8...

京东宣布投资3.97亿美元 与Farfetch达战略合作

【FT12短网址资讯】今日,京东集团与全球时髦精品购物渠道Farfetch宣布树立战略协作伙伴关系,创建全国奢侈品网购首选渠道。作为这项协作的一部分,京东集团将向Farfetch投资3.97亿美元并成为其最大的股东之一,一起京东集团董事局主...

供应链管理危机,博世供应断货致宝马停产

供应链管理危机,博世供应断货致宝马停产

[ 短网址资讯 ] 前几天的一条消息在汽车圈里引起了巨大反应:由于博世转向系统部件供应断货,宝马旗下 1 系、2 系、3 系以及 4 系车型暂时处于停产状况。怎么经营好全产业链内的一些供应联系,直接决议了一款车型在全生命周期内的命...

不用登陆新浪微博就能t.cn短链接在线生成

 t.cn短链接大家应该都很熟悉,很多网友在日常中也经常用到。但是,要生成t.cn短网址有点小麻烦,那就是必须要先登陆微博,然后在微博上发布长网址,他才会生成一个对应的短网址上面这个流程非常的麻烦,那么有什么更简单的方法来生成新浪...

发表评论

访客

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