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?