from PBKDF2 import PBKDF2
from Crypto.Cipher import AES
import os
salt = os.urandom(8) # 64-bit salt
key = PBKDF2("This passphrase is a secret.", salt).read(32) # 256-bit key
iv = os.urandom(16) # 128-bit IV
cipher = AES.new(key, AES.MODE_CBC, iv)
import bcrypt
from getpass import getpass
master_secret_key = getpass('tell me the master secret key you are going to use')
salt = bcrypt.gensalt()
combo_password = raw_password + salt + master_secret_key
hashed_password = bcrypt.hashpw(combo_password, salt)
我通常有一个
secrets.py
,它与其他python脚本分开存储,不受版本控制。然后,只要需要,就可以执行from secrets import <required_pwd_var>
。这样,您就可以依赖内置文件安全系统中的操作系统,而无需重新发明自己的操作系统。使用
Base64
编码/解码也是混淆密码的另一种方法,尽管不完全安全更多-Hiding a password in a python script (insecure obfuscation only)
安全的方法是使用AES加密敏感数据,加密密钥是通过基于密码的密钥派生函数(PBE)派生的,PBE是用于加密/解密AES加密密钥的主密码。
你可以使用pbkdf2
确保存储salt/iv/passphrase,并使用相同的salt/iv/passphase解密
Weblogic使用类似的方法来保护配置文件中的密码
你自己知道万能钥匙。不要硬编码。
使用
py-bcrypt
(bcrypt),强大的散列技术自己生成密码。基本上你可以这么做(一个主意…)
把salt和hashed密码保存在某个地方,这样每当需要使用密码时,您就可以读取加密的密码,并根据您再次输入的原始密码进行测试。
这就是现在登录的基本工作方式。
相关问题 更多 >
编程相关推荐