当前位置:首页 > 短网址资讯

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

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

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

相关文章

FT12短网址教你如何利用大数据算法定位网站性能瓶颈(BOSS)

FT12短网址教你如何利用大数据算法定位网站性能瓶颈(BOSS)

FT12短网址资讯:架构师非常关注性能问题,上篇文章中我们介绍了京东的自动化压测体系 ForceBot,这篇文章来自 LinkedIn 的技术博客,介绍如何通过大数据算法来分析调用数据,自动定位性能瓶颈。本文由高可用架构翻译。背景我们 FT…

短网址网站开发运维的经验分享与总结

短网址网站开发运维的经验分享与总结

所谓隔行如隔山,不干这一行,不懂这一行的难。随着用户的逐渐增多,ft12短网址的日访问PV终于突破了50万,但其中掺杂着一半喜与一半忧。喜的是自己的短网址站得到了广大用户的认可,忧的是如何处理这么大的流量。期间,服务器分别经历了内存报警、I…

短网址自定义功能的测试

测验首要分为两大部分, 功能性测验和非功能性测验。前次已经做了功能性测验的解说,(没阅读的请阅读《简单高效的短网址生成服务C#实现》)下面解说自界说短网址测验和非功能性测验,全面的测验过程,以确保ft12短网址的各项功能契合用户的需求。…

“色流”产业十年风云录:40万大军,吸食百亿利润

“色流”产业十年风云录:40万大军,吸食百亿利润

色流群体如蚂蚁一般,跟随着流量蜜罐迁移,经历多个时代的轮回变迁,并分食百亿级别市场……标题:“色流”产业十年风云录:40万大军,吸食百亿利润来源:一本财经,已授权『互联网的一些事』,转载请联系作者。在“流量为王”的时代,流量在某种意义上,就…

否认全盘接手,百度外卖或与顺丰成立合资公司

否认全盘接手,百度外卖或与顺丰成立合资公司

[ 亿欧导读 ] 现在顺丰控股收购baidu外卖的方向是,双方将按照5:5的出资份额,一起出资经过建立合资公司来运营,不过一切都未确定,还存在变数。一位接近交易的人士表示:“之所以不会全盘接手baidu外卖,主要是因为顺丰以为全资…

那个卖了房子去大理的姑娘,4个月以后又回来了……

那个卖了房子去大理的姑娘,4个月以后又回来了……

一、那个卖了房子去大理的姑娘,4个月以后又回来了……也许,我们每个人的内心深处都有一个梦:到一个安静美好的小地方,开一家小店,就这么慢悠悠地晃过这一生……不过,你真的确定这些是你想要的吗?1我一个女文青朋友年前卖了苏州的房子,去云南大理追求…

发表评论

访客

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