AES 加解密

aes(高级加密标准)Advanced Encryption Standard 又称Rijndael加密法

历史:
是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES(很少用了,先不管),已经被多方分析且广为全世界所使用。
经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。

设计标准

严格地说,AES和Rijndael加密法并不完全一样(虽然在实际应用中二者可以互换),因为Rijndael加密法可以支持更大范围的区块和密钥长度:AES的区块长度固定为128 比特(16byte),密钥长度则可以是128,192或256比特;而Rijndael使用的密钥和区块长度可以是32位的整数倍,以128位为下限,256比特为上限。加密过程中使用的密钥是由Rijndael密钥生成方案产生。

大多数AES计算是在一个特别的有限域完成的。
AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态(state)”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:
AddRoundKey — 矩阵中的每一个字节都与该次轮秘钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

SubBytes — 通过个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。
ShiftRows — 将矩阵中的每个横列进行循环式移位。
MixColumns — 为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每列的四个字节。
最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。

加密标准

PS: AES 对称分组密码体制 , 分组密码算法 (通常)= 密码扩展算法 + 加密(解密)算法 (两个部分)

在iOS中AES的应用: 加密和解密都是使用同样的方式,所以代码是一眼的,对称


加密、解密
调用

这里面的秘钥16个字节,加密和解密的秘钥是一样;这个就是单钥密码体制;

这样就可以完成了;
代码可以在github上找到:
https://github.com/helinyu/iOSSecurity

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 安全加密C语言库OpenSSL,在Android中服务器和客户端之间的签名验证和数据加密通信等。 OpenSSL系...
    AJoyce_阅读 4,883评论 7 7
  • 原文链接:http://www.jianshu.com/p/b63095c59361 对称加密算法,即加密和解密使...
    雲凌禹阅读 19,480评论 0 3
  • 本文主要介绍移动端的加解密算法的分类、其优缺点特性及应用,帮助读者由浅入深地了解和选择加解密算法。文中会包含算法的...
    苹果粉阅读 11,567评论 5 29
  • 前言 在项目开发过程中,为了保证传输数据的安全性,我们经常要对传输的内容进行加密处理,以增加别人破解的成本。常用的...
    Leafly阅读 3,694评论 2 8
  • AES简介 美国国家标准技术研究所在2001年发布了高级加密标准(AES)。AES是一个对称分组密码算法,旨在取代...
    零距离仰望星空阅读 2,169评论 15 17