有没有办法在VB6中完全擦除字符串?

时间:2015-09-17 04:57:18

标签: vb6

我想从内存中删除密码,信用卡号等机密字符串。

在C#中,有一个名为SecureString的类。

但是在VB6中,我没有找到任何解决方案。

有没有办法从内存中完全删除字符串?

1 个答案:

答案 0 :(得分:4)

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 APISecureString所基于的内容)。