Каковы мои варианты шифрования файла перед его записью на Python?

Мне нужно что-то простое, где я могу:

  1. зашифровать его паролем (соль, все, что связано)
  2. записать его на диск

Тогда наоборот:

  1. читать с диска
  2. расшифровать его с моим паролем

Все, что я там нахожу, либо не поддерживается должным образом, либо не имеет примеров, либо устарело, либо требует использования 50 строк кода, которые я должен поддерживать сам.

Я хотел бы иметь что-то столь же простое, как то, что я делаю локально на своем терминале. Я делаю это на своем терминале:

Чтобы зашифровать:

$ cat data | openssl des3 -salt | dd of=output.des3

Чтобы расшифровать:

$ dd if=output.des3 | openssl des3 -d -salt

Как я могу сделать это в Python кросс-платформенным и безопасным способом?

Я нашел этот pythoncentral.io/hashing-strings-with-python и этот docs.python.org/2/library/hashlib.html . Надеюсь, это поможет.
@ onurcano22 Спасибо за ответ. К сожалению, я не хочу хэшировать. Хеширование не сохраняет данные и является односторонней функцией. Мне нужно зашифровать данные с помощью пароля.
Я мало занимался шифрованием/дешифрованием, и я думаю, что многие другие тоже этого не делали. Я считаю, что вы получите лучшую помощь на stackoverflow.com
@ onurcano22 onurcano22 Я боялся, что это назовут рекомендацией по программному обеспечению ... но я только что разместил вопрос в stackoverflow.

Ответы (1)

Во-первых, избегайте шифрования 3DES. Он существует только как временная мера, созданная из-за паники после того, как обычный DES был сломан, но до того, как у людей появилась какая-либо разумная альтернатива. Он лишь немного более безопасен, чем простой DES (который тривиально сломан), и ужасно неэффективен по сравнению с более современными вещами (даже Blowfish, который ненамного моложе, быстрее и безопаснее ) .

Теперь, что касается того, о чем вы говорите, в Python, я бы посоветовал взглянуть на Cryptography . Это стандарт де-факто для криптографических операций в Python, которые явно не обрабатываются каким-либо модулем специального назначения (например, поддержка SSL в стандартной библиотеке). Хотя я сам никогда ничего не делал с ним напрямую, он используется множеством других проектов для получения криптоподдержки.