- (NSString*)QQJXPinxCreator:(NSString*)sha256
{
NSString* pan = [sha256substringToIndex:sha256.length/2];
NSString* pinv = [sha256substringFromIndex:sha256.length/2];
if(pan.length!= pinv.length)
{
return @"生成的sha256字符串位数不是偶数!";
}
NSData * Data = [self convertHexStrToData:pan];
Byte* panByte = (Byte*)[Databytes];
NSData* panData = [selfconvertHexStrToData:pinv];
Byte* pinvByte = (Byte*)[panDatabytes];
BytenewData[Data.length];
for(inti =0; i < Data.length; i++)
{
newData[i] = panByte[i]^pinvByte[i];
}
NSData* temdatas = [NSDatadataWithBytes:newDatalength:Data.length];
NSString* temp = [selfconvertDataToHexStr:temdatas];
CXTLog(@"tyon = %@",temp);
returntemp;
}
- (NSData*)convertHexStrToData:(NSString*)str
{
if(!str || [strlength] ==0)
{
returnnil;
}
NSMutableData *hexData = [[NSMutableData alloc]initWithCapacity:[str length]*2];
NSRangerange;
if([strlength] %2==0)
{
range =NSMakeRange(0,2);
}else
{
range =NSMakeRange(0,1);
}
for(NSIntegeri = range.location; i < [strlength]; i +=2)
{
unsignedintanInt;
NSString*hexCharStr = [strsubstringWithRange:range];
NSScanner*scanner = [[NSScanneralloc]initWithString:hexCharStr];
[scannerscanHexInt:&anInt];
NSData *entity = [[NSData alloc]initWithBytes:&anInt length:1];
[hexDataappendData:entity];
range.location+= range.length;
range.length=2;
}
returnhexData;
}
- (NSString*)convertDataToHexStr:(NSData*)data
{
if(!data || [datalength] ==0)
{
return@"";
}
NSMutableString *string = [[NSMutableString alloc]initWithCapacity:[data length]/2];
[dataenumerateByteRangesUsingBlock:^(constvoid*bytes,NSRangebyteRange,BOOL*stop)
{
unsignedchar*dataBytes = (unsigned char*)bytes;
for(NSIntegeri =0; i < byteRange.length; i++)
{
NSString*hexStr = [NSStringstringWithFormat:@"%x", (dataBytes[i]) &0xff];
if([hexStrlength] ==2)
{
[stringappendString:hexStr];
}else
{
[stringappendFormat:@"0%@", hexStr];
}
}
}];
returnstring;
}