博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS AES 加密
阅读量:4296 次
发布时间:2019-05-27

本文共 1641 字,大约阅读时间需要 5 分钟。

iOS AES 加密

下面的方法可以指定操作方式对文本进行加密或解密,还可以指定密钥的长度。这里 AES 加解密指定的是 ECB 模式,kCCOptionPKCS7Padding 填充方式。

当然,实际上 iOS 只支持 kCCOptionPKCS7Padding 一种填充方式,或者不填充,并且 CCCrypt(...) 函数默认的是 CBC 模式。

+ (NSData *)crypt:(NSData *)data operation:(CCOperation)operation 		   passowrd:(NSString *)password keySize:(NSInteger)keySize{    NSInteger keylength = password.length+1;    char *key = malloc(keylength);    bzero(key, keylength);    [password getCString:key maxLength:keylength encoding:NSUTF8StringEncoding];        NSUInteger dataLength = [data length];    size_t bufferSize = dataLength + keySize;    void *buffer = malloc(bufferSize);    bzero(buffer, bufferSize);        CCCryptorStatus status = CCCrypt(operation,                                     kCCAlgorithmAES,                                     kCCOptionPKCS7Padding | kCCOptionECBMode,                                     key, keySize,                                     NULL,                                     [data bytes], dataLength,                                     buffer, bufferSize,                                     &bufferSize);    NSData *result;    if (status == kCCSuccess){        result = [NSData dataWithBytes:buffer length:bufferSize];    }    if (buffer) free(buffer);    if (key) free(key);        return result;}

函数 CCCrypt(...) 进行了一次加解密操作,实际上进行了一系列操作,这些操作可以通过 CCCrytorCreate()CCCryptorUpdate()CCCryptorFinal()CCCryptorRelease() 函数分别进行。

另外,如果需要使用除 CBC 和 ECB 外的加解密模式,可以使用 CCCryptorCreateWithMode() 函数获取一个 CCCryptorRef 变量,而后再进行加解密操作。

PKCS7Padding:对于 AES 而言,加密时需要先将明文分割为 128 位的明文块,所以需要对明文进行填充使其能够整除 16 字节,

而填充的值就是真实填充的字节个数,如果明文字节长度刚好是 16 的整数倍,那么则需要填充 16 个值为 0x10 的字节。

转载地址:http://cvdws.baihongyu.com/

你可能感兴趣的文章
Java-POI使用
查看>>
Java-IO类记录
查看>>
Oracle设置密码永不过期
查看>>
[Windows-bat] Jeecg-boot一键启动或重启
查看>>
[Windows] Anacoda安装和使用
查看>>
MySQL根据日期统计数据和查询数据
查看>>
VMware虚拟机安装MacOS
查看>>
Windows环境部署Wordpress
查看>>
Selenium+ChromeDriver使用记录
查看>>
cdp4j使用记录
查看>>
SpringBoot集成thymeleaf模板引擎
查看>>
ArcMap使用记录
查看>>
Java-Comparator比较器-中文排序
查看>>
nginx入门和使用实践
查看>>
吉他换弦
查看>>
软考报名入口及流程
查看>>
OpenResty入门和使用实践
查看>>
java+ffmpeg使用记录
查看>>
vue集成天地图
查看>>
vue集成统计图-DataV-Echarts-Highcharts
查看>>