编辑
我提出了一个使用ctypes(反过来使用c)将内存归零的解决方案。
import sys
import ctypes
def zerome(string):
location = id(string) + 20
size = sys.getsizeof(string) - 20
memset = ctypes.cdll.msvcrt.memset
# For Linux, use the following. Change the 6 to whatever it is on your computer.
# memset = ctypes.CDLL("libc.so.6").memset
print "Clearing 0x%08x size %i bytes" % (location, size)
memset(location, 0, size)
我不能保证这一准则的安全。它在x86和CPython 2.6.2上进行了测试。更长的写操作是
here
.
在python中解密和加密将不起作用。字符串和整数被截留和持久化,这意味着你会在各处留下一堆密码信息。
哈希是标准答案,当然明文最终需要在某个地方处理。
正确的解决方案是作为C模块执行敏感过程。
但是如果你的记忆经常被破坏,我会重新考虑你的安全设置。