# Include <CommonCrypto/CommonCryptor. h>
+ (NSString *) Encrypte :( NSString *) src key :( NSString *) key {
NSString * retStr = nil;
NSData * srcData = [src dataUsingEncoding: NSUTF8StringEncoding];
Size_t dataOutAvilable = ([srcData length] + kCCBlockSize3DES )&~ (KCCBlockSize3DES-1 );
Unsigned char * dataOut = (unsigned char *) malloc (dataOutAvilable * sizeof (unsigned char ));
Memset (void *) dataOut, 0x0, dataOutAvilable );
Size_t dataOutMoved = 0;
Byte iv [] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
Cccryptorstatus ccstatus = cccrypt (kccencrypt, encrypt, decrypt | kccoptionecbmode, (void const *) [Key utf8string], kcckeysize3des, IV, [srcdata bytes], [srcdata length], (void *) dataout, dataoutavilable, & dataoutmoved );
If (ccstatus = 0) {// success base64
Int base64len = base64_encode_length (dataoutmoved) + 2;
Char * TMP = new char [base64len];
Memset (TMP, 0, base64len );
Int base64ret = base64_encode (const char *) dataout, dataoutmoved, TMP, base64len );
If (base64ret> 0 ){
Retstr = [[nsstring alloc] initwithuf8string: TMP] autorelease];
}
Delete [] TMP;
}
// NSLog (@ "ccStatus: % d EncrypteStr: % @", ccStatus, retStr );
Delete dataOut;
Return retStr;
}
+ (NSString *) depolicte :( NSString *) src key :( NSString *) key {
NSString * retStr = nil;
Int base64Len = base64_decode_length ([src length]) + 2;
Char * tmp = new char [base64Len];
Memset (tmp, 0, base64Len );
CCCryptorStatus ccStatus = kCCParamError;
Int base64Ret = base64_decode ([src UTF8String], [src length], tmp, base64Len );
If (base64Ret> 0 ){
Size_t dataOutAvilable = (base64Len + kCCBlockSize3DES )&~ (KCCBlockSize3DES-1 );
Unsigned char * dataOut = (unsigned char *) malloc (dataOutAvilable * sizeof (unsigned char ));
Memset (void *) dataOut, 0x0, dataOutAvilable );
Size_t dataOutMoved = 0;
Byte iv [] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
CcStatus = CCCrypt (kCCDecrypt, encrypt, decrypt | kCCOptionECBMode, (void const *) [key UTF8String], kCCKeySize3DES, iv, (const void *) tmp, base64Ret, (void *) dataOut, dataOutAvilable, & dataOutMoved );
If (ccStatus = 0 ){
RetStr = [[NSString alloc] initWithBytes: dataOut length: dataOutMoved encoding: NSUTF8StringEncoding] autorelease];
}
Delete dataOut;
}
// NSLog (@ "ccStatus: % d depolicte: % @", ccStatus, retStr );
Delete [] tmp;
Return retStr;
}