例如:
原文:“123456”
3DES编码文字:“VjARiuJ9BeE =”
解码3DES:“123456 \ x02 \ x02”
如何删除\ x01,\ x02等字符。 ?
NSLog知道如何避免这些字符,但变量仍然有\ x01,\ 02 ......等。
在python中,拥有属性string.printable可以避免这些字符。
在iOS中,如何避免?感谢。
答案 0 :(得分:0)
尝试使用此代码,它将完美解码,
[self htmlDecode:@"123456\x02\x02"];
-(NSString *)htmlDecode:(NSString *)htmlString
{
NSData* stringData = [htmlString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* options = @{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};
NSAttributedString* decodedAttributedString = [[NSAttributedString alloc] initWithData:stringData options:options documentAttributes:NULL error:NULL];
NSString* decodedString = [decodedAttributedString string];
NSLog(@"%@",decodedString);
return decodedString;
}
答案 1 :(得分:0)
在
ccStatus = CCCrypt(kCCDecrypt,
kCCAlgorithm3DES,
kCCOptionPKCS7Padding & kCCModeCBC,
vkey,
kCCKeySize3DES,
vinitVec,
vplainText,
plainTextBufferSize,
(void *)bufferPtr,
bufferPtrSize,
&movedBytes);
修复后
ccStatus = CCCrypt(kCCDecrypt,
kCCAlgorithm3DES,
kCCOptionPKCS7Padding,
vkey,
kCCKeySize3DES,
vinitVec,
vplainText,
plainTextBufferSize,
(void *)bufferPtr,
bufferPtrSize,
&movedBytes);
我解决了这个问题,PCKS7Padding默认是CBC模式,无需在代码中添加& kCCModeCBC。
在代码中删除& kCCModeCBC后,我可以获得没有\ 0x1,\ 0x2 ......等的真实文本。
希望这可以帮助那些有同样问题的人。