python - 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)
但不是很干净,我不想base64
用base64
函数加密。
解决方案
有很多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)
在这种情况下,即使您的数据库暴露给外面的人,您的实际密码也是安全的,只有哈希值是可见的。
推荐阅读
- spring - Spring批处理阅读器抱怨资源
- python - 如何使用 python Bokeh 绘制圆形图 LinearColorMapper
- webgl - WebGL 并行性的 Hello World 示例
- google-apps-script - Google 应用程序脚本 - 制作电子表格的单个副本
- angular - ERROR 错误:StaticInjectorError(AppModule)[UserformService -> HttpClient]:
- google-app-maker - 如何对其数据源是关系的表进行排序
- java - 通过 Socket 持续连接到服务器,直到建立连接
- javascript - 使用 JS/HTML 调用流注/Fom
- mysql - “解析 config/database.yml 时发生 YAML 语法错误”Ruby on Rails
- php - PostgreSQL phppgadmin 在 Cpanel 中没有触发函数