Ios 删除\x01、\x02…等。解码3DES后从NSString开始

Ios 删除\x01、\x02…等。解码3DES后从NSString开始,ios,objective-c,Ios,Objective C,例如: 原文:“123456” 3DES编码文本:“VjARiuJ9BeE=” 解码3DES:“123456\x02\x02” 如何删除\x01、\x02…等字符 NSLog知道如何避免这些字符,但在变量中仍然有\x01、\02…等 在python中,have属性string.printable可以避免这些字符 在iOS中,如何避免 谢谢。试试这段代码,它能完美解码 [self htmlDecode:@"123456\x02\x02"]; -(NSString *)htmlDecode:(N

例如:

原文:“123456”

3DES编码文本:“VjARiuJ9BeE=”

解码3DES:“123456\x02\x02”

如何删除\x01、\x02…等字符

NSLog知道如何避免这些字符,但在变量中仍然有\x01、\02…等

在python中,have属性string.printable可以避免这些字符

在iOS中,如何避免


谢谢。

试试这段代码,它能完美解码

[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;

}
以前

修理后

ccStatus = CCCrypt(kCCDecrypt,
                   kCCAlgorithm3DES,
                   kCCOptionPKCS7Padding,
                   vkey,
                   kCCKeySize3DES,
                   vinitVec,
                   vplainText,
                   plainTextBufferSize,
                   (void *)bufferPtr,
                   bufferPtrSize,
                   &movedBytes);
我解决了这个问题,PCKS7Padding默认为CBC模式,无需在代码中添加&kCCModeCBC

在代码中删除&kCCModeCBC后,我可以在不使用\0x1、\0x2…等的情况下获得真实文本


希望这能帮助有相同问题的人。

或者,如果需要,您可以将AES与CommonCrypto库一起使用
ccStatus = CCCrypt(kCCDecrypt,
                   kCCAlgorithm3DES,
                   kCCOptionPKCS7Padding,
                   vkey,
                   kCCKeySize3DES,
                   vinitVec,
                   vplainText,
                   plainTextBufferSize,
                   (void *)bufferPtr,
                   bufferPtrSize,
                   &movedBytes);