Как закодировать пароль в скрипте кода python?

#python #python-3.x

#python #python-3.x

Вопрос:

Я пытаюсь закодировать пароль в скрипте python, чтобы никто не мог его увидеть. Я попытался использовать для этого библиотеку keyring, но я не могу найти способ закодировать пароль в самом скрипте. Ниже приведен мой код

 import keyring
keyring.set_password("system", "username", "password")
a = keyring.get_password("system", "username")
print(a)
 

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

 smtp.login("username",a)
 

Комментарии:

1. Если вы запустите свой код просто так, вы получите password взамен. Если вы не запустите keyring. delete_password(«system», «username») , вы всегда получите password взамен.

2. Он, спасибо за ответ, я знаю, что он вернет ответ с паролем, но как я могу передать этот ответ на пароль для входа в smtp, я должен использовать только расшифрованную строку пароля @lalam

3. ваш код правильный, потому что, если вы это сделаете print(type(a)) , вы получите <class 'str'> то, что действительно для вашего входа smtp.login("username",a) в систему. Если вы используете этот код внутри большой функции, вы можете протестировать login с помощью чего-то вроде: smtp.login("username",keyring.get_password("system", "username")) чтобы проверить, работает ли он.

4. когда я печатаю type(a) , я получаю <class ‘NoneType’> в Linux, когда я делаю keyring.get_password(«system», «username») Я ничего не получаю.

5. Теперь возврат None определенно связан с областью действия keyring . Согласно их официальной странице PyPI: get_password(service, username): Returns the password stored in the active keyring. If the password does not exist, it will return None. -Вы используете virtualenv? -Можете ли вы (для тестирования) запустить с ("system1", "username1") ?

Ответ №1:

В Python есть встроенный модуль, который называется hashlib . Вы можете использовать его следующим образом:

 import hashlib

hashlib.md5(username.encode('utf-8')).hexdigest()
 

Имейте в виду, что алгоритм MD5 небезопасен, вы должны использовать что-то вроде SHA256.

Посмотреть документацию здесь