swift實現AES解密

原來的加密解密是用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;

}

相關文章
相關標籤/搜索