1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- //
- // DES3Util.m
- // Miaxis
- //
- // Created by tongjun on 14-1-14.
- // Copyright (c) 2014年 tongjun. All rights reserved.
- //
- #import "DES3Util.h"
- #import <CommonCrypto/CommonCrypto.h>
- #import "GTMBase64.h"
- #define gkey @"fujianxzz110@kestrel$#365#$"
- #define gIv @"01234567"
- @implementation DES3Util
- // 加密方法
- + (NSString*)encrypt:(NSString*)plainText {
- NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
- size_t plainTextBufferSize = [data length];
- const void *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);
-
- const void *vkey = (const void *) [gkey UTF8String];
- const void *vinitVec = (const void *) [gIv UTF8String];
-
- ccStatus = CCCrypt(kCCEncrypt,
- kCCAlgorithm3DES,
- kCCOptionPKCS7Padding,
- vkey,
- kCCKeySize3DES,
- vinitVec,
- vplainText,
- plainTextBufferSize,
- (void *)bufferPtr,
- bufferPtrSize,
- &movedBytes);
- if (ccStatus != kCCSuccess) {
-
- return @"des3encrypterror";
- }
- //NSLog(@"%d",ccStatus);
- NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
- NSString *result = [GTMBase64 stringByEncodingData:myData];
- return result;
- }
- // 解密方法
- + (NSString*)decrypt:(NSString*)encryptText {
- NSData *encryptData = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];
- size_t plainTextBufferSize = [encryptData length];
- const void *vplainText = [encryptData 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);
-
- const void *vkey = (const void *) [gkey UTF8String];
- const void *vinitVec = (const void *) [gIv UTF8String];
-
- ccStatus = CCCrypt(kCCDecrypt,
- kCCAlgorithm3DES,
- kCCOptionPKCS7Padding,
- vkey,
- kCCKeySize3DES,
- vinitVec,
- vplainText,
- plainTextBufferSize,
- (void *)bufferPtr,
- bufferPtrSize,
- &movedBytes);
- if (ccStatus != kCCSuccess) {
-
- return @"des3decrypterror";
- }
- //NSLog(@"%d",ccStatus);
- NSString *result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr
- length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding];
- return result;
- }
- @end
|