首页 > 解决方案 > Python在明文文件中加密密码的最佳方法

问题描述

我正在寻找一种从用户那里获取密码但具有良好安全性的方法。

目前,我在yaml这样的文件中写入用户密码:

---
app:
  username: tata
  password: toto

使用python的代码:

 url = http://application.com
 username = Cfg.get(['app', 'username'])
 password = Cfg.get(['app', 'password'])
 auth = Appli(url, username, password)

但不是很干净,我不想base64base64函数加密。

标签: pythonencryptionpasswords

解决方案


有很多pythonic方法可以做到这一点。您还可以仅将密码存储在数据库级别,例如SHA1, md5,SHA256等。

当用户输入他/她的密码时,系统应将其转换为哈希(您选择的哈希算法),然后与数据库的密码进行检查输入的密码是否正确。

import hashlib

url = http://application.com
username = Cfg.get(['app', 'username'])

password= Cfg.get(['app', 'password'])

#store pass_hash in the database
pass_hash= hashlib.sha256(password.encode()).hexdigest()

#authenticate using pass_hash not the actual textual password
auth = Appli(url, username, pass_hash)

在这种情况下,即使您的数据库暴露给外面的人,您的实际密码也是安全的,只有哈希值是可见的。


推荐阅读