热门搜索 :
考研考公
您的当前位置:首页正文

数据加密-AES加密

来源:东饰资讯网

AES加密(Advanced Encryption Standard,AES),又称 高级加密标准,AES的基本要求是,采用对称分组密码体制,AES加密数据块分组长度必须为128比特,密钥长度可以是128比特、192比特、256比特中的任意一个(如果数据块及密钥长度不足时,会补齐)。

AES加密有很多轮的重复和变换。大致步骤如下:
1、密钥扩展(KeyExpansion)
2、初始轮(Initial Round)
3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey
4、最终轮(Final Round),最终轮没有MixColumns。

Paste_Image.png

AES算法模式分为以下四种:
ECB(Electronic Code Book电子密码本)模式
ECB模式是最早采用和最简单的模式,它将加密的数据分成若干组,每组的大小跟加密密钥长度相同,然后每组都用相同的密钥进行加密。
优点: 1.简单; 2.有利于并行计算; 3.误差不会被扩散;
缺点: 1.不能隐藏明文的模式; 2.可能对明文进行主动攻击; 因此,此模式适于加密小消息。
CBC(Cipher Block Chaining,加密块链)模式
优点: 不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。
缺点: 1.不利于并行计算; 2.误差传递; 3.需要初始化向量IV
CFB(Cipher FeedBack Mode,加密反馈)模式
优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.误差传送:一个明文单元损坏影响多个单元; 3.唯一的IV;
OFB(Output FeedBack,输出反馈)模式 优点: 1.隐藏了明文模式; 2.分组密码转化为流模式; 3.可以及时加密传送小于分组的数据;
缺点: 1.不利于并行计算; 2.对明文的主动攻击是可能的; 3.误差传送:一个明文单元损坏影响多个单元;

本文采用的是ECB算法模式128密钥长度,补码方式为PKCS7Padding,加密结果编码方式有两种Base6416进制(这两种本文都会实现)

另外为避免加密后的数据被篡改导致的服务端无效操作,会在AES加密基础上增加篡改验证机制,具体验证机制可自定义,本文只提供思路

废话不多说,直接上代码
1、创建NSData的分类,实现加密解密功能

NSData+AES128.h.png NSData+AES128.m.png

2、创建NSString的分类,string转data,并进行加密解密操作

NSString+AES128.h.png NSString+AES128.m.png

3、解释一下防篡改的验证机制,在AES加密完成后,将AES+key拼接进行MD5加密,截取特定位置、特定长度的字符用作校验符,将校验符与原AES加密结果拼接发送给服务端,服务端拿到这一串数据后,将校验符与AES加密数据拆分,并采用同样的校验符生成机制生成校验符,将之与接收到的校验符对比,若相同,则表示数据未被篡改,若不同,则为篡改数据

4、运行结果

运行结果.png

完毕

Top