原来的加密解密是用java写的,用在安卓系统上。如今要用在iOS系统上,因此从服务器上下载过来的加密文件要用swift来实现其的解密方法。java
具体过程以下:swift
给NSData增长一个类目,NSData+AES服务器
NSData+AES.h加密
- (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSData *)iv;get
NSData+AES.mit
- (NSData *)AES128operation:(CCOperation)operation key:(NSString *)key iv:(NSData *)ivio
{coding
char keyPtr[kCCKeySizeAES128 + 1];下载
bzero(keyPtr, sizeof(keyPtr));加密解密
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
Byte key2[] = {0xF0,0x1E,0x02,0xB2,0xE3,0xC9,0x7A,0x43,0xFD,0xFE,0x31,0x1A,0x2B,0xA4,0x4C,0x60};
// IV
Byte ivPtr[kCCBlockSizeAES128 + 1];
bzero(ivPtr, sizeof(ivPtr));
//[iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
[iv getBytes:&ivPtr length:16];
size_t bufferSize = [self length] + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptorStatus = CCCrypt(operation, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
key2, kCCKeySizeAES128,
ivPtr,
[self bytes], [self length],
buffer, bufferSize,
&numBytesEncrypted);
if(cryptorStatus == kCCSuccess){
NSLog(@"Success");
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}else{
NSLog(@"Error");
}
free(buffer);
return nil;
}