我正在寻找一种安全存储密码的方法,我打算在一些Python脚本中使用这些密码.我将登录不同的东西,我不想将密码作为明文存储在脚本本身.
相反,我想知道是否有任何东西能够安全地存储这些密码,然后使用类似主密码的东西检索它们,我可以在开始时输入脚本.
Cpp*_*ner 42
自己知道主密钥.不要硬编码.
使用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)
Run Code Online (Sandbox Code Playgroud)
在某处保存salt和哈希密码,因此无论何时需要使用密码,您都在阅读加密密码,并根据您再次输入的原始密码进行测试.
这基本上是这些天登录应该如何工作的.
Pra*_*kar 13
我通常有一个secrets.py与我的其他python脚本分开存储,并且不受版本控制.然后,只要有需要,你就可以做到from secrets import <required_pwd_var>.这样,您可以依赖操作系统内置文件安全系统,而无需重新创建自己的文件.
使用Base64编码/解码也是混淆密码的另一种方法,虽然不是完全安全的
更多信息 - 在python脚本中隐藏密码(仅限不安全的混淆)
安全方式是通过AES加密您的敏感数据,加密密钥是通过基于密码的密钥派生函数(PBE)派生的,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)
Run Code Online (Sandbox Code Playgroud)
确保存储salt/iv/passphrase,并使用相同的salt/iv/passphase进行解密
Weblogic使用类似的方法来保护配置文件中的密码
| 归档时间: |
|
| 查看次数: |
120039 次 |
| 最近记录: |