AES Секретный ключ для шифрования для Python - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть учетные данные базы данных в моем коде Python, которые я хотел бы зашифровать, используйте значение во время выполнения, расшифровав его.

Я нашел приведенный ниже код с помощью stackoverflow и работает, как и ожидалось

from Crypto.Cipher import AES
import base64

msg_text = b'test some plain text here'.rjust(32)
secret_key = b'1234567890123456' # create new & store somewhere safe

cipher = AES.new(secret_key,AES.MODE_ECB) # never use ECB in strong systems obviously
encoded = base64.b64encode(cipher.encrypt(msg_text))
print(encoded)
# ...
decoded = cipher.decrypt(base64.b64decode(encoded))
print(decoded.strip())

В приведенном выше коде есть secret_key, а в комментарии говорится о создании нового секретного ключа.

  1. Как создать секретный ключ и где его можно создать?

  2. Какое место рекомендуется хранить секретные ключи?Есть ли какая-либо структура / место, которое рекомендуется сохранить?Я думаю, что это должно быть сохранено в базе данных

  3. Является ли приведенный выше код надежным способом шифрования и дешифрования?Если это может быть подделано, каким путем следует подходить?Предоставление примера ссылки было бы очень полезно

1 Ответ

0 голосов
/ 28 ноября 2018
  1. Вместо жесткого кодирования пароля в исходном коде, вы можете использовать пароль и генерировать ключи с помощью функций PBKDF2 во время выполнения.

  2. Пароль не должен сохраняться в базе данных или в файле.Вы должны сохранить в памяти.

  3. Режим ECB небезопасен, он приводит к утечке данных, см. пингвин в Википедии.Вы должны использовать режим CBC или режим CTR для шифрования.Однако имейте в виду, что, хотя вы можете выполнять запросы на равенство в режиме ECB, вы не можете выполнять в режиме CBC или CTR.Если режим ECB подходит для вашего случая, то есть;шаблон не является проблемой безопасности, вы можете использовать ECB.

...