Подтвердить что ты не робот

Безопасное хранение паролей для использования в python script

Возможный дубликат:
Мне нужно безопасно хранить имя пользователя и пароль в Python, какие у меня параметры?

Я ищу способ безопасного хранения паролей, которые я намерен использовать в некоторых сценариях на Python. Я буду регистрироваться в разных вещах, и я не хочу хранить пароли как открытый текст в самом script.

Вместо этого мне было интересно, есть ли что-то, что может безопасно хранить эти пароли, а затем извлекать их с помощью чего-то вроде главного пароля, который я мог бы ввести в script в начале.

4b9b3361

Ответ 1

Знайте главный ключ самостоятельно. Не пытайтесь это сделать.

Используйте py-bcrypt (bcrypt), мощный метод хэширования для генерации пароля самостоятельно.

В принципе вы можете это сделать (идея...)

import bcrypt
from getpass import getpass
master_secret_key = getpass('tell me the master secret key you are going to use')
salt = bcrypt.gensalt()
combo_password = raw_password + salt + master_secret_key
hashed_password = bcrypt.hashpw(combo_password, salt)

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

Это в основном то, как логин должен работать в наши дни.

Ответ 2

У меня обычно есть secrets.py, который хранится отдельно от моих других скриптов python и не находится под управлением версиями. Затем, когда это необходимо, вы можете сделать from secrets import <required_pwd_var>. Таким образом, вы можете полагаться на встроенную систему безопасности файлов в операционных системах, не изобретая свои собственные.

Использование Base64 кодирования/декодирования также является еще одним способом обфускации пароля, хотя и не полностью защищенного

Подробнее здесь Скрытие пароля в python script (небезопасная обфускация)

Ответ 3

безопасный способ шифрует ваши конфиденциальные данные AES, а ключ шифрования - это деривация с помощью функции деривации ключа на основе пароля (PBE), главный пароль, используемый для шифрования/дешифрования ключа шифрования для AES.

мастер-пароль → защищенный ключ- > шифровать данные с помощью ключа

Вы можете использовать pbkdf2

from PBKDF2 import PBKDF2
from Crypto.Cipher import AES
import os
salt = os.urandom(8)    # 64-bit salt
key = PBKDF2("This passphrase is a secret.", salt).read(32) # 256-bit key
iv = os.urandom(16)     # 128-bit IV
cipher = AES.new(key, AES.MODE_CBC, iv)

обязательно сохраните соль /iv/passphrase и расшифруйте, используя ту же соль /iv/passphase

Weblogic использовал аналогичный подход для защиты паролей в конфигурационных файлах