1. - (NSString *)QQJXPinxCreator:(NSString *)sha256
    2. {
    3. NSString * pan = [sha256 substringToIndex:sha256.length/2];
    4. NSString * pinv = [sha256 substringFromIndex:sha256.length/2];
    5. if (pan.length != pinv.length)
    6. {
    7. return @"生成的sha256字符串位数不是偶数!";
    8. }
    9. NSData * Data = [self convertHexStrToData:pan];
    10. Byte * panByte = (Byte *)[Data bytes];
    11. NSData * panData = [self convertHexStrToData:pinv];
    12. Byte * pinvByte = (Byte *)[panData bytes];
    13. Byte newData[Data.length];
    14. for (int i = 0; i < Data.length; i++)
    15. {
    16. newData[i] = panByte[i]^pinvByte[i];
    17. }
    18. NSData * temdatas = [NSData dataWithBytes:newData length:Data.length];
    19. NSString * temp = [self convertDataToHexStr:temdatas];
    20. CXTLog(@"tyon = %@",temp);
    21. return temp;
    22. }
    23. - (NSData*)convertHexStrToData:(NSString*)str
    24. {
    25. if (!str || [str length] ==0)
    26. {
    27. return nil;
    28. }
    29. NSMutableData *hexData = [[NSMutableData alloc]initWithCapacity:[str length]*2];
    30. NSRange range;
    31. if ([str length] %2==0)
    32. {
    33. range = NSMakeRange(0,2);
    34. } else
    35. {
    36. range = NSMakeRange(0,1);
    37. }
    38. for (NSInteger i = range.location; i < [str length]; i +=2)
    39. {
    40. unsigned int anInt;
    41. NSString *hexCharStr = [str substringWithRange:range];
    42. NSScanner *scanner = [[NSScanner alloc]initWithString:hexCharStr];
    43. [scanner scanHexInt:&anInt];
    44. NSData *entity = [[NSData alloc]initWithBytes:&anInt length:1];
    45. [hexData appendData:entity];
    46. range.location+= range.length;
    47. range.length=2;
    48. }
    49. return hexData;
    50. }
    51. - (NSString*)convertDataToHexStr:(NSData*)data
    52. {
    53. if (!data || [data length] ==0)
    54. {
    55. return @"";
    56. }
    57. NSMutableString *string = [[NSMutableString alloc]initWithCapacity:[data length]/2];
    58. [data enumerateByteRangesUsingBlock:^(const void*bytes,NSRange byteRange,BOOL*stop)
    59. {
    60. unsigned char *dataBytes = (unsigned char*)bytes;
    61. for (NSInteger i =0; i < byteRange.length; i++)
    62. {
    63. NSString *hexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];
    64. if ([hexStr length] ==2)
    65. {
    66. [string appendString:hexStr];
    67. } else
    68. {
    69. [string appendFormat:@"0%@", hexStr];
    70. }
    71. }
    72. }];
    73. return string;
    74. }