博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS中的AES256算法
阅读量:6088 次
发布时间:2019-06-20

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

这次只展示代码,算法原理,网上一堆,我就不介绍了。

#import "Helper.h"#import 
#import
#import "TDWBase64.h"@implementation Helper///加密+ (NSString *)aes256EncrytWithContent:(NSString *)content key:(NSString *)key { NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding]; char keyptr[kCCKeySizeAES256+1]; bzero(keyptr, sizeof(keyptr)); [key getCString:keyptr maxLength:sizeof(keyptr) encoding:NSUTF8StringEncoding]; NSUInteger datalength = contentData.length; size_t bufferSize = datalength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; char iv[] = {0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x38}; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyptr, 32, iv, contentData.bytes, datalength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; NSString *result = [TDWBase64 stringByEncodingData:data]; return result; } else { free(buffer); return nil; } return @"";}///解密+ (NSString *)aes256DecrytWithContent:(NSString *)content key:(NSString *)key { NSData *contentData = [TDWBase64 decodeString:content]; char keyptr[kCCKeySizeAES256+1]; bzero(keyptr, sizeof(keyptr)); [key getCString:keyptr maxLength:sizeof(keyptr) encoding:NSUTF8StringEncoding]; NSUInteger datalength = contentData.length; size_t bufferSize = datalength + kCCBlockSizeAES128; void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; char iv[] = {0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x30, 0x38}; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding, keyptr, 32, iv, contentData.bytes, datalength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; return result; } else { free(buffer); return nil; } return @"";}复制代码

坑点: 1.

NSData *data = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];复制代码

这个会自动释放buffer。 坑点文章:

2.Vi偏移量要用byte的形式写。

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

你可能感兴趣的文章
Redis Study Notes
查看>>
unsigned 后面不跟类型的情况
查看>>
QT按键(Qbutton)改变颜色
查看>>
less学习笔记三
查看>>
git stash 怎么用?
查看>>
shell输出加颜色
查看>>
非root Android设备上Tcpdump的实现
查看>>
mysql之多表查询的其他查询
查看>>
一个popup弹窗实现思路--(基于mintui分析)
查看>>
手写一个WPF-MVVM
查看>>
系统组件:警告对话框AlertDialog(1)
查看>>
jquery下removeClass(“oldClassName”).addClass("newClassName")的问题
查看>>
uwsgi ini 设置
查看>>
CF994B Knights of a Polygonal Table 第一道 贪心 set/multiset的用法
查看>>
archer 安装
查看>>
ORA-01033: ORACLE initialization or shutdown in progress
查看>>
二维指针与二维数组研究
查看>>
hiho一下 第三十九周 归并排序求逆序数
查看>>
Subsets and Subsets II (回溯,DFS,组合问题)
查看>>
go语言中的接口interface
查看>>