How to encrypt the NSString value using DES in iPhone?

encryption, ios, iphone, objective-c

Solution

Finally I done with following code and now its working fine.

- (NSString*) doCipher:(NSString*)encryptValue {

    const void *vplainText;
    size_t plainTextBufferSize = [encryptValue length];
    vplainText = (const void *) [encryptValue UTF8String];    
    CCCryptorStatus ccStatus;
    uint8_t *bufferPtr = NULL;
    size_t bufferPtrSize = 0;
    size_t movedBytes = 0;

    bufferPtrSize = (plainTextBufferSize + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);
    bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
    memset((void *)bufferPtr, 0x0, bufferPtrSize);

    Byte iv [] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};

    NSString *key = @"encryptKey";
    const void *vkey = (const void *) [key UTF8String];

    ccStatus = CCCrypt(kCCEncrypt,
                       kCCAlgorithmDES,
                       kCCOptionPKCS7Padding,
                       vkey, 
                       kCCKeySizeDES,
                       iv,
                       vplainText,
                       plainTextBufferSize,
                       (void *)bufferPtr,
                       bufferPtrSize,
                       &movedBytes);

    NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
    NSString *result = [myData base64Encoding]; 

   return result;
}

Problem

I used following code to encrypt the NSString value with Key, ``` NSString *token = @"encryptValue"; NSString *key = @"encryptKey"; NSData * keyData = [key dataUsingEncoding: NSUTF8StringEncoding]; NSData * plainData = [token dataUsingEncoding: NSUTF8StringEncoding]; NSMutableData * encData = [NSMutableData dataWithLength: plainData.length + 256]; size_t bytesWritten = 0; CCCryptorStatus ccStatus = CCCrypt (kCCEncrypt, kCCAlgorithmDES, kCCOptionPKCS7Padding, [keyData bytes], kCCKeySizeDES, NULL, [plainData bytes], [plainData length], encData.mutableBytes, encData.length, &bytesWritten); encData.length = bytesWritten; NSString *encrypted = [[NSString alloc] initWithBytes:[encData bytes] length:[encData length] encoding: NSUTF8StringEncoding]; NSLog(@"ENCRYPT : %@",encrypted); ``` But I'm getting (null) is the result. Is anything wrong? How to encrypt the NSString value?

Original source