加密模式:ECB
填充(CCOptions):kCCOptionPKCS7Padding | kCCOptionECBMode
偏移量:NULL
key:16位 / 32位
//加密方法
+(NSString *)encryptAES:(NSString *)content key:(NSString *)key;
//解密方法
+(NSString *)decryptAES:(NSString *)content key:(NSString *)key;
+(NSString *)encryptAES:(NSString *)content key:(NSString *)key{ //为结束符'\0' +1 char keyPtr[[key length]+1];//kCCKeySizeAES128,kCCKeySizeAES256 memset(keyPtr, 0, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; //1,string转Data NSData *contentData = [content dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger contentDataLength = [contentData length]; //密文长度 <= 明文程度 + BlockSize size_t bufferSize = contentDataLength + kCCBlockSizeAES128;//key:16位 void *buffer = malloc(bufferSize); size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES, kCCOptionPKCS7Padding | kCCOptionECBMode,//ECB keyPtr,//key [key length],//key.length=16(kCCBlockSizeAES128) NULL,//ECB时iv为空 contentData.bytes, contentDataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { //2,Data转Data加密 NSData *dataOut = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; //3,Data转string Base64编码(系统方法) NSString *encryptStr = [dataOut base64EncodedStringWithOptions:0]; return encryptStr; } free(buffer); return nil; }
+(NSString *)decryptAES:(NSString *)content key:(NSString *)key{ //为结束符'\0' +1 char keyPtr[[key length]+1];//kCCKeySizeAES128,kCCKeySizeAES256 memset(keyPtr, 0, sizeof(keyPtr)); [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding]; //1,string转Data Base64解密(系统方法) NSData *contentData = [[NSData alloc]initWithBase64EncodedString:content options:0]; NSUInteger contentDataLength = [contentData length]; //密文长度 <= 明文程度 + BlockSize size_t bufferSize = contentDataLength + kCCBlockSizeAES128;//key:16位 void *buffer = malloc(bufferSize); size_t numBytesDecrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES, kCCOptionPKCS7Padding | kCCOptionECBMode,//ECB keyPtr,//key [key length],//key.length=16(kCCBlockSizeAES128) NULL,//ECB时iv为空 contentData.bytes, contentDataLength, buffer, bufferSize, &numBytesDecrypted); if (cryptStatus == kCCSuccess) { //2,Data转Data 解密 NSData *dataOut = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted]; //3,Data转string UTF8 NSString *decryptStr = [[NSString alloc] initWithData:dataOut encoding:NSUTF8StringEncoding]; return decryptStr; } free(buffer); return nil; }
相关文章