iOS 3DES加密无盐值加密

来源:互联网 发布:仿小刀娱乐网源码 编辑:程序博客网 时间:2024/05/16 11:40
+ (NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt{        const void *vplainText;    size_t plainTextBufferSize;        if (encryptOrDecrypt == kCCDecrypt)//解密    {        NSData *EncryptData = [GTMBase64 decodeData:[plainText dataUsingEncoding:NSUTF8StringEncoding]];        plainTextBufferSize = [EncryptData length];        vplainText = [EncryptData bytes];    }    else //加密    {        NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];        plainTextBufferSize = [data length];        vplainText = (const void *)[data bytes];    }        CCCryptorStatus ccStatus;    uint8_t *bufferPtr = NULL;    size_t bufferPtrSize = 0;    size_t movedBytes = 0;        bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);    bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));    memset((void *)bufferPtr, 0x0, bufferPtrSize);    // memset((void *) iv, 0x0, (size_t) sizeof(iv));        const void *vkey = (const void *)[DESKEY UTF8String];    // NSString *initVec = @"init Vec";    //const void *vinitVec = (const void *) [initVec UTF8String];    //  Byte iv[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};    ccStatus = CCCrypt(encryptOrDecrypt,                       kCCAlgorithm3DES,                       kCCOptionPKCS7Padding | kCCOptionECBMode,                       vkey,                       kCCKeySize3DES,                       nil,                       vplainText,                       plainTextBufferSize,                       (void *)bufferPtr,                       bufferPtrSize,                       &movedBytes);    //if (ccStatus == kCCSuccess) NSLog(@"SUCCESS");    /*else if (ccStatus == kCC ParamError) return @"PARAM ERROR";     else if (ccStatus == kCCBufferTooSmall) return @"BUFFER TOO SMALL";     else if (ccStatus == kCCMemoryFailure) return @"MEMORY FAILURE";     else if (ccStatus == kCCAlignmentError) return @"ALIGNMENT";     else if (ccStatus == kCCDecodeError) return @"DECODE ERROR";     else if (ccStatus == kCCUnimplemented) return @"UNIMPLEMENTED"; */        NSString *result;        if (encryptOrDecrypt == kCCDecrypt)    {        result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr                                                                length:(NSUInteger)movedBytes]                                        encoding:NSUTF8StringEncoding]                  ;    }    else    {        NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];        result = [GTMBase64 stringByEncodingData:myData];    }        return result;}
OK


0 0