python中的密码安全

2024-10-03 21:30:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习python,所以我想我会尝试制作一个脚本,自动为我发送gmail电子邮件。在

它需要发送一个登录名和密码到我的gmail帐户,以自动发送一些电子邮件给我。在

我在这里读了一些指南,似乎passlib是个不错的选择。但我还是有点搞不清楚如何设置它。在

  1. 我用passlib加密我的密码
  2. 结果将存储在我的linuxvm中的一个隐藏文件中。在
  3. 当脚本运行时,它需要解析vm上的隐藏文件以获取hased密码。在
  4. 这里是我困惑的地方,我想我需要解密,然后再发送出去?这不是很不安全吗?或者我可以不解密就发送它,希望gmail可以解密它?在

我正在使用SMTP库。在

server = smtplib.SMTP('smtp.gmail.com', 587)
server.ehlo()
server.starttls()
server.login(gmail_sender, gmail_passwd)

谢谢


Tags: 文件脚本密码server电子邮件指南vm帐户
2条回答

starttls()调用设置加密的SSL/TLS连接,因此密码不会以明文形式发送。是的,在将密码发送给服务器登录名(). 或者,您可以将密码存储在一个环境变量中,并将其读入python,这样做不那么安全,但是更容易实现。在

Passlib在这里可能不是正确的选择。它主要涉及密码的单向散列。您可以使用生成的哈希来验证用户提供的密码是否与您的哈希匹配,但不能对哈希进行解密。(旧的Passlib版本确实有一个错误命名的.encrypt()方法,但是Passlib 1.7将其重命名为.hash())。在

根据您的用例,您可能需要以下两种情况之一:

  • keyring是一个python接口,用于在操作系统控制的“钱包”中保存和存储密码。它可以在windows、linux等平台上跨平台工作

但是,如果需要从登录的桌面会话外部触发的脚本运行密码,则使用起来可能会很尴尬。在

在这种情况下,您可能需要加密用于存储的凭据,并选择一个密码(在调用脚本时提供,例如从命令行提示符或env var)来解密这些凭据。在

  • cryptography是执行类似操作的好选择;它提供了许多不需要(太多)加密经验的高级函数,例如它们的fernet encryption助手。在

相关问题 更多 >