iOS AES 256加密
2015-12-23 15:58
609 查看
#import <Foundation/Foundation.h>
@class NSString;
@interface NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(NSString *)key;
//加密
- (NSData *)AES256DecryptWithKey:(NSString *)key;
//解密
@end
#import "NSData+AES.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(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 numBytesEncrypted =
0;
CCCryptorStatus cryptStatus =
CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding |
kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self
bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus ==
kCCSuccess) {
return [NSData
dataWithBytesNoCopy:buffer
length:numBytesEncrypted];
}
free(buffer);
return
nil;
}
- (NSData *)AES256DecryptWithKey:(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 cryptStatus =
CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding |
kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self
bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if (cryptStatus ==
kCCSuccess) {
return [NSData
dataWithBytesNoCopy:buffer
length:numBytesDecrypted];
}
free(buffer);
return
nil;
}
@end
//test
NSString *testString =
@"test";
NSData *aesData = [SecurityUtil
encryptAESData:testString];
NSLog(@"AES加密:%@", aesData);
NSLog(@"AES解密:%@", [SecurityUtil
decryptAESData:aesData]);
@class NSString;
@interface NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(NSString *)key;
//加密
- (NSData *)AES256DecryptWithKey:(NSString *)key;
//解密
@end
#import "NSData+AES.h"
#import <CommonCrypto/CommonCryptor.h>
@implementation NSData (Encryption)
- (NSData *)AES256EncryptWithKey:(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 numBytesEncrypted =
0;
CCCryptorStatus cryptStatus =
CCCrypt(kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding |
kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self
bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus ==
kCCSuccess) {
return [NSData
dataWithBytesNoCopy:buffer
length:numBytesEncrypted];
}
free(buffer);
return
nil;
}
- (NSData *)AES256DecryptWithKey:(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 cryptStatus =
CCCrypt(kCCDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding |
kCCOptionECBMode,
keyPtr,
kCCBlockSizeAES128,
NULL,
[self
bytes], dataLength,
buffer, bufferSize,
&numBytesDecrypted);
if (cryptStatus ==
kCCSuccess) {
return [NSData
dataWithBytesNoCopy:buffer
length:numBytesDecrypted];
}
free(buffer);
return
nil;
}
@end
//test
NSString *testString =
@"test";
NSData *aesData = [SecurityUtil
encryptAESData:testString];
NSLog(@"AES加密:%@", aesData);
NSLog(@"AES解密:%@", [SecurityUtil
decryptAESData:aesData]);
相关文章推荐
- iOS如何隐藏系统状态栏
- iOS之旅--处理跳转
- Briefs 1.3.3 mac 下好用的 iOS 原型制作工具 简体中文完美汉化版 最新版
- iOS 7: 使用Base64编解码NSData和NSString对象
- Habber - IOS XMPP 客户端 教程 (终)总结与反思
- <iOS>Git简史
- 使用Jenkins搭建iOS开发的CI服务器
- ios让两个controller的navigationbar颜色不同
- 个人对mvc mvvm的理解---代码结构 IOS
- iOS中KVC与KVO的区别
- IOS ARC内存管理总结
- IOS XCode无法选择设备调试,设备显示
- iOS获取控制器里面的控件
- <iOS>自动布局
- iOS画图时 自己做的一小笔记
- IOS支付宝集成一系列问题
- Habber - IOS XMPP 客户端 教程 (四)聊天界面制作
- Xcode各版本官方下载, Mac和IOS及Xcode版本历史
- iO7以上用CIFilter生成二维码
- <iOS>ARC下需要注意的内存管理