#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.
Посмотреть документацию здесь