您的位置:首页 > 移动开发 > IOS开发

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: