После долгих исследований я считаю, что у меня есть приемлемый ответ, однако, пожалуйста, отнеситесь к нему со скептицизмом, так как я НЕ эксперт в этой области.Вам сообщили.
Это также НЕ устранило проблему печати с stdin, но я только что удалил функцию print () все вместе, чтобы устранить проблему.Этот ответ предназначен ТОЛЬКО для защиты паролем.
tl: dr вот ответ https://alexwlchan.net/2016/11/you-should-use-keyring/, но я объясню более подробно и приведу ниже примеры моего кода, используемого для хранения и использования паролей, поканикогда не переписывайся с ними.
ДЛИННЫЙ ОТВЕТ: Python имеет пакет, специально созданный для этой цели, называемый keyring ().Это позволяет хранить и вызывать пароли с относительной безопасностью.Он работает с вашими учетными данными, поэтому, к сожалению, если кто-то получит доступ к вашей учетной записи, он будет иметь доступ к этой информации, но без этого вы должны быть теоретически безопасны (или настолько безопасны, насколько можно предположить)
Keyring() плюс пакет, называемый getpass (), позволяет пользователю вводить пароль в свою систему без фиксации его в виде простого текста и, таким образом, предотвращать случайную утечку через общий доступ к файлам или тому подобное.
Вот очень простой скриптЯ написал, чтобы автоматически подсказать вам ваш выбор и сохранить пароль без необходимости хранить его в виде простого текста
import keyring
import getpass
def main():
system = input('System:')
username = input('Please input username:')
keyring.set_password(system,username,getpass.getpass())
print('The password for ' +username+' in '+system+' has been set.\nPlease do not misplace, you will not be able to recover at this point.\nFor misplaced passwords, please resubmit new entry with the same details, it will overwrite the previous entry.')
if __name__=='__main__':
print('Please input the system in which the password will be used,\nand corresponding username.')
main()
(если вы используете Python 2, тогда он должен быть raw_input ())
Это делается совершенно другим сценарием, поэтому вам НЕ НУЖНО ИМЕТЬ ИХ ВМЕСТЕ, запустите один сценарий, чтобы установить пароль, и с этого момента вызов основного пароля очень прост в вашем основном сценарии.
passwd = keyring.get_password('<system you inputed>','<username you inputed>')
И все готово!
ps У меня лично естьпоместил bash-файл в мою переменную PATH, которая запускает этот скрипт, так что, если мне когда-нибудь понадобится создать пароль, его можно будет сделать из любого каталога на машине, что укрепит хорошие процедуры безопасности.