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

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

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

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

相关文章

线下成电商必争之地 京东美团陆续在京开店

在推翻了传统商超之后,电商却一直企图和它们做兄弟,2017年,在用O2O与线下零售合作遭受重重困阻之后,电商公司干脆做起了自营超市。阿里旗下的盒马鲜生一度成为新零售的代表,而该公司创始人侯毅的老东家京东,也不想错失新式线下超市的时机。据联商...

O2O进入下半场,百度或携人工智能实现弯道超车?

近日,百度外卖副总裁陈锦晖宣布辞职的消息刷爆了互联网,百度外卖业务要出售给顺丰的消息也时有流出。正如美团CEO王兴所言,国内O2O行业已经进入了“下半场”。随着移动互联网人口红利减退,烧钱竞争所带来的粗放式增长已经告一段落。 实际上在今年第...

Prime Day筹备全攻略 各路商家一起解决备货难题

【FT12短网址资讯】还有一个月,本年跨境出口电商第一个大促旺季——亚马逊Prime Day将到来,而此时则成了各卖家最首要的备战时刻。而这也是全球跨境电商解决方案效劳商ESG集团(E-Services Group)参与的第2次亚马逊Pri...

职业打假人,这几年的沉浮路

职业打假人,近代的历史,可以从这个行业的“祖师爷”王海说起,在上个世纪90年代初,王海的打假行为,对于这个行业的诞生,起到了“启蒙”的作用,虽然在90年代,整体的大环境并未引起太大的波澜,但是“职业打假”的这 颗种子,和王海的职业,一同发展...

短链接URL系统是怎么设计的?

短链接URL系统是怎么设计的?

最实在的回答实现一个算法,将长地址转成短地址。实现长和短一一对应。然后再实现它的逆运算,将短地址还能换算回长地址。这个回答看起来挺完美的,然后候选人也会说现在时间比较短,如果给我时间我去找这个算法就解决问题了。但是稍微有点计算机或者信息论常...

陕西联通和短网址的故事---国企的作风

    昨天下班途中,突然接到了一个陌生来电,声称是陕西联通的工作人员,来势汹汹的说:你们知道我是谁吗?我是陕西联通的,只要我们稍微在系统里面提交一个申请,工信部就能把你们网站封了!就能让你们网站没有...

发表评论

访客

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