我需要擦除NSString(这是一个现有的SKD,由于客户端已经在使用它,我可能将无法更改方法签名。
出于安全原因,我们现在需要擦除我们拥有的NSString中的字节。
我发现下面的代码假定给了我一个指向CFString基础指针的指针,并且据推测我可以使用memset擦除数据。
(unsigned char*) CFStringGetCStringPtr((CFStringRef) password, CFStringGetSystemEncoding());
我尝试了下面的代码,但没有用:
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