Python在透明文件中加密密码的最佳方法

时间:2019-01-29 15:36:27

标签: python encryption passwords

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

此刻,我在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

2 个答案:

答案 0 :(得分:1)

有很多Python方式可以做到这一点。 您还可以仅在SHA1md5SHA256等哈希中将密码存储在数据库级别。

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

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有用