可能重复:
我需要安全地存储在Python用户名和密码,我有哪些选择?
我在寻找一种方式来安全地存储我打算在一些Python脚本,以使用密码。 我会登录到不同的东西,我不希望将密码存储在脚本本身的明文。
相反,我在想,如果有什么,它能够安全地存储这些密码,然后使用类似一个主密码,我可以在一开始就进入到文字检索。
可能重复:
我需要安全地存储在Python用户名和密码,我有哪些选择?
我在寻找一种方式来安全地存储我打算在一些Python脚本,以使用密码。 我会登录到不同的东西,我不希望将密码存储在脚本本身的明文。
相反,我在想,如果有什么,它能够安全地存储这些密码,然后使用类似一个主密码,我可以在一开始就进入到文字检索。
知道主密钥自己。 不要硬编码。
使用py-bcrypt
(bcrypt),强大的散列技术生成密码你自己。
基本上,你可以做到这一点(的想法...)
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
编码/解码也是另一种方式来混淆虽然不是完全安全的密码
这里更多- 隐藏在Python脚本密码(不安全混淆只)
羊城通由AES加密敏感数据和加密密钥是基于口令的密钥导出函数(PBE),用于加密/解密的AES加密密钥的主密码导出。
主密码 - >安全键 - >通过密钥加密数据
您可以使用PBKDF2
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)
确保存储盐/ IV /密码,并使用相同的盐/ IV / passphase解密
Weblogic的使用类似的方法来保护配置文件中的密码