OBJ-C用CFStringGetCStringPtr擦拭NSString不起作用,因为找不到正确的编码

时间:2018-08-12 14:31:51

标签: ios objective-c nsstring cfstring

我需要擦除NSString(这是一个现有的SKD,由于客户端已经在使用它,我可能将无法更改方法签名。

出于安全原因,我们现在需要擦除我们拥有的NSString中的字节。

我发现下面的代码假定给了我一个指向CFString基础指针的指针,并且据推测我可以使用memset擦除数据。

(unsigned char*) CFStringGetCStringPtr((CFStringRef) password, CFStringGetSystemEncoding());
  1. 我没有为NSString设置特定的编码。
  2. 是否可以获取NSString编码?

我尝试了下面的代码,但没有用:

unsigned char *charPin = (unsigned char*) CFStringGetCStringPtr((CFStringRef) pin, CFStringGetSystemEncoding());
if (charPin == NULL) {
    for (int i = 0;  i < kCFStringEncodingShiftJIS_X0213_00; ++i) {
        charPin = (unsigned char*) CFStringGetCStringPtr((CFStringRef) pin, (CFStringEncodings)i);
        if (charPin != NULL) {
            break;
        }
    }
}
memset(charPin, 0, [pin length]);
pin = nil;
  

kCFStringEncodingShiftJIS_X0213_00是CFStringEncodings枚举的最后一个成员

在查找所有可能的编码后,charPin仍然为NULL,除非我缺少某些内容,否则这是不可能的。

有什么想法或评论吗?

请不要说我需要将NSString更改为其他内容...

10x

0 个答案:

没有答案