DES3Util.m 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. //
  2. // DES3Util.m
  3. // Miaxis
  4. //
  5. // Created by tongjun on 14-1-14.
  6. // Copyright (c) 2014年 tongjun. All rights reserved.
  7. //
  8. #import "DES3Util.h"
  9. #import <CommonCrypto/CommonCrypto.h>
  10. #import "GTMBase64.h"
  11. #define gkey @"fujianxzz110@kestrel$#365#$"
  12. #define gIv @"01234567"
  13. @implementation DES3Util
  14. // 加密方法
  15. + (NSString*)encrypt:(NSString*)plainText {
  16. NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
  17. size_t plainTextBufferSize = [data length];
  18. const void *vplainText = (const void *)[data bytes];
  19. CCCryptorStatus ccStatus;
  20. uint8_t *bufferPtr = NULL;
  21. size_t bufferPtrSize = 0;
  22. size_t movedBytes = 0;
  23. bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
  24. bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
  25. memset((void *)bufferPtr, 0x0, bufferPtrSize);
  26. const void *vkey = (const void *) [gkey UTF8String];
  27. const void *vinitVec = (const void *) [gIv UTF8String];
  28. ccStatus = CCCrypt(kCCEncrypt,
  29. kCCAlgorithm3DES,
  30. kCCOptionPKCS7Padding,
  31. vkey,
  32. kCCKeySize3DES,
  33. vinitVec,
  34. vplainText,
  35. plainTextBufferSize,
  36. (void *)bufferPtr,
  37. bufferPtrSize,
  38. &movedBytes);
  39. if (ccStatus != kCCSuccess) {
  40. return @"des3encrypterror";
  41. }
  42. //NSLog(@"%d",ccStatus);
  43. NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
  44. NSString *result = [GTMBase64 stringByEncodingData:myData];
  45. return result;
  46. }
  47. // 解密方法
  48. + (NSString*)decrypt:(NSString*)encryptText {
  49. NSData *encryptData = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];
  50. size_t plainTextBufferSize = [encryptData length];
  51. const void *vplainText = [encryptData bytes];
  52. CCCryptorStatus ccStatus;
  53. uint8_t *bufferPtr = NULL;
  54. size_t bufferPtrSize = 0;
  55. size_t movedBytes = 0;
  56. bufferPtrSize = (plainTextBufferSize + kCCBlockSize3DES) & ~(kCCBlockSize3DES - 1);
  57. bufferPtr = malloc( bufferPtrSize * sizeof(uint8_t));
  58. memset((void *)bufferPtr, 0x0, bufferPtrSize);
  59. const void *vkey = (const void *) [gkey UTF8String];
  60. const void *vinitVec = (const void *) [gIv UTF8String];
  61. ccStatus = CCCrypt(kCCDecrypt,
  62. kCCAlgorithm3DES,
  63. kCCOptionPKCS7Padding,
  64. vkey,
  65. kCCKeySize3DES,
  66. vinitVec,
  67. vplainText,
  68. plainTextBufferSize,
  69. (void *)bufferPtr,
  70. bufferPtrSize,
  71. &movedBytes);
  72. if (ccStatus != kCCSuccess) {
  73. return @"des3decrypterror";
  74. }
  75. //NSLog(@"%d",ccStatus);
  76. NSString *result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr
  77. length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding];
  78. return result;
  79. }
  80. @end