ios aes加密
2015-06-09 20:48
591 查看
/*
* 功能描述:AES加密
*/
-(NSData *)AES256EncryptionWithKey:(NSString *)key{
char keyPtr[kCCKeySizeAES256 + 1];
bzero(keyPtr, sizeof(keyPtr));//将字符串keyPtr的前sizeof(keyPtr)个字节置为0(包括'\0')
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptorStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesEncrypted);
if (cryptorStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
/*
* 功能描述:AES解密
*/
-(NSData *)AES256DecryptionWithKey:(NSString *)key{
char keyPtr[kCCKeySizeAES256 + 1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptorStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesDecrypted);
if (cryptorStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
* 功能描述:AES加密
*/
-(NSData *)AES256EncryptionWithKey:(NSString *)key{
char keyPtr[kCCKeySizeAES256 + 1];
bzero(keyPtr, sizeof(keyPtr));//将字符串keyPtr的前sizeof(keyPtr)个字节置为0(包括'\0')
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptorStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesEncrypted);
if (cryptorStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
/*
* 功能描述:AES解密
*/
-(NSData *)AES256DecryptionWithKey:(NSString *)key{
char keyPtr[kCCKeySizeAES256 + 1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptorStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesDecrypted);
if (cryptorStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer);
return nil;
}
相关文章推荐
- iOS设计模式——Category和 Extension
- ios des加密
- ios data转换成16进制字符串以及16进制字符串转data
- iOS中CG绘图笔记
- iOS app 崩溃日志符号化及代码定位
- kernel日志信息(power limit)
- IOS学习 关于工程引用
- SMBIOS介绍(3):实现
- SMBIOS介绍(2):结构表
- SMBIOS介绍(1):概述
- WWDC 2015大会视频直播地址:看iOS9大展身手
- IOS打包.a静态库
- 升级IOS9,提示滑动升级,卡在密码锁屏界面,无反应了
- iOS开发零基础教程之AFNetWorking POST 队列请求
- iOS 动画结束后 view的位置 待完善
- iOS动画
- windows做iOS自动化测试
- iOS开发 Modal弹出控制器简介
- 苹果三大系统更新 iOS 9有何亮点?
- IOS 提示Unsupported Configuration