在Swift中擦除NSData内容

时间:2014-09-03 15:20:03

标签: objective-c security memory swift nsdata

我有一个包含敏感数据的NSData对象。操作完成后,我想擦除内存以避免任何潜在的安全问题。在Objective-C中,这很容易。我可以打电话给...

memset([mySensitiveData bytes], 0, [mySensitiveData length]);
然而,在斯威夫特,它并不那么简单。我尝试了相同的......

memset(mySensitiveData.bytes, 0, mySensitiveData.length)

...但是,我收到编译错误说...

'UnsafePointer<Void>' is not convertible to 'UnsafeMutablePointer<Void>'

任何想法如何解决这个问题并在Swift中安全擦除内存?谢谢!

1 个答案:

答案 0 :(得分:6)

NSData是不可变的,这就是为什么它使用UnsafePointer<Void>作为字节指针的原因。

您应该使用NSMutableData,然后致电:resetBytesInRange(NSMakeRange(0, mySensitiveData.length))。此方法将用memset替换为零的内容。