DES3Util.m 3.2 KB

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