| #pragma mark - AES128位加解密- (NSData *)AES128EncryptWithKey:(NSString *)key {
 
 char keyPtr[kCCKeySizeAES128 + 1];
 memset(keyPtr, 0, 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,
 kCCAlgorithmAES,
 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 *)AES128DecryptWithKey:(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 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;
 }
 
 |