Редактировать
Я сделал решение, которое использует 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. Более длинная запись здесь .
Расшифровка и шифрование в Python не будут работать. Строки и целые числа интернированы и постоянны, что означает, что вы оставляете беспорядок информации о паролях везде.
Хеширование является стандартным ответом, хотя, конечно, открытый текст в конечном итоге нужно где-то обрабатывать.
Правильным решением является выполнение чувствительных процессов в виде модуля C.
Но если ваша память постоянно подвергается риску, я бы переосмыслил ваши настройки безопасности.