我正在寻找一种从用户那里获取密码的方法,但是具有很好的安全性。
此刻,我在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)
但是不是很干净,我不想使用base64
函数加密到base64
。
答案 0 :(得分:1)
有很多Python方式可以做到这一点。
您还可以仅在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)
在这种情况下,即使您的数据库暴露于外部,您的实际密码也将是安全的,只有哈希是可见的。
答案 1 :(得分:0)
不太清楚您要解决什么问题。
您可以使用pycrypto
来加密或解密数据,任何现代算法都可以。真正的问题是,如果需要以编程方式访问加密的数据,应如何存储密钥。将加密的数据和密钥一起存储会真正解决您的安全问题吗?
旁注:您可能会发现this old blog post有用