AES(高级加密算法)本身是一个比较复杂的加密算法,就算法本身而言,我曾经看过加密原理,但是能力有限,实在是看不懂。这里只是贴出使用iOS自带的API实现的加解密功能代码。作为标记,以免下次用到时,找不到。
在实际使用过程中,为了方便实用,采用了对NSData、NSString类进行扩展的方式,具体代码如下:
1、NSData的扩展
本例是使用128位的密钥
#import "NSData+AES128.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation NSData(AES128)
- (NSData *)encrypt:(NSString *)key {
char keyPtr[kCCKeySizeAES128 + 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, kCCOptionECBMode | kCCOptionPKCS7Padding, keyP