2015-09-17 104 views

回答

4

A SecureString在靜止時被加密,這不僅僅是提供一種方法來防止它留在內存中。

有沒有辦法從內存中完全擦除字符串?

是的,您需要現場修改字符串並覆蓋其內容。

可以在LHS模式做到這一點使用mid$()

Dim i As Long 
For i = 1 To Len(secret) 
    Mid$(secret, i, 1) = "0" 
Next 

或者與ZeroMemoryCopyMemory API:

ZeroMemory ByVal StrPtr(secret), LenB(secret) 
... 
CopyMemory ByVal StrPtr(secret), ByVal StrPtr(String$(Len(secret), "0")), LenB(secret) 

對於加密,你可以實現DPAPI CryptProtectData API(這是SecureString是基於什麼上)。

相關問題