Правильным решением является использование bytearray () ..., который является изменяемым, и вы можете безопасно удалять ключи и чувствительный материал из оперативной памяти.
Однако, есть некоторые библиотеки, в частности, библиотека "cryptography" python, которая не позволяет использовать "bytearray". Это проблематично ... в некоторой степени эти криптографические библиотеки должны обеспечивать, чтобы только изменяемые типы использовались для ключевого материала.
Существует SecureString, представляющий собой пип-модуль, который позволяет полностью удалить ключ из памяти ... (я немного изменил его рефакторинг и назвал его SecureBytes). Я написал несколько модульных тестов, которые показывают, что ключ полностью удален.
Но есть большая оговорка: если чей-то пароль "type", то слово "type" будет стёрто со всего python ... в том числе в определениях функций и атрибутах объектов.
Другими словами ... мутирование неизменяемых типов - ужасная идея, и, если вы не будете очень осторожны, можете немедленно завершить работу любой работающей программы.
Правильное решение ... никогда не используйте неизменяемые типы для ключевого материала, паролей и т. Д. Любой, кто создает криптографическую библиотеку или подпрограмму, такую как "getpass", должен работать с "bytearray" вместо строк python.