· 6 years ago · Mar 15, 2019, 08:08 AM
1NSString* plaintexthex = @"536176696E67204163636F756E747C313233343536000000";
2NSData *dTextIn = [self dataFromHexString:plaintexthex]; //my own way of convert hex to data
3
4NSString* keyhex = @"6E7B336FD2051BA165A9362BD9735531";
5NSData *_keyData = [self dataFromHexString:keyhex]; //my own way of convert hex to data
6
7CCCryptorStatus ccStatus;
8uint8_t *bufferPtr = NULL;
9size_t bufferPtrSize = 0;
10size_t movedBytes = 0;
11
12bufferPtrSize = ([dTextIn length] + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
13bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
14memset((void *)bufferPtr, 0x00, bufferPtrSize);
15
16uint8_t iv[kCCBlockSize3DES];
17memset((void *) iv, 0x00, (size_t) sizeof(iv));
18
19unsigned char *bytePtr = (unsigned char *)[_keyData bytes];
20
21ccStatus = CCCrypt(kCCEncrypt, // CCoperation op
22 kCCAlgorithm3DES, // CCAlgorithm alg
23 kCCModeCBC, // CCOptions
24 [_keyData bytes], // const void *key
25 kCCKeySize3DES, // 3DES key size length 24 bit
26 iv, // const void *iv,
27 [dTextIn bytes], // const void *dataIn
28 [dTextIn length], // size_t dataInLength
29 bufferPtr, // void *dataOut
30 bufferPtrSize, // size_t dataOutAvailable
31 &movedBytes); // size_t *dataOutMoved
32
33NSString *result;
34NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length: (NSUInteger)movedBytes];
35result = [self hexStringFromData:myData];
36
37NSLog(@"Data to encrypt %@",dTextIn);
38NSLog(@"Encryption key %@",_keyData);
39NSLog(@"Bytes of key are %s ", bytePtr);
40NSLog(@"Key length %d ",[_keyData length]);
41NSLog(@"Encrypted bytes %@", myData);
42NSLog(@"Encrypted string %@", result);
43NSLog(@"Encrypted string length %d", [result length]);
44
45- (NSData *)dataFromHexString:(NSString *)string
46{
47 NSMutableData *stringData = [[[NSMutableData alloc] init] autorelease];
48 unsigned char whole_byte;
49 char byte_chars[3] = {'