安全地存储密码以便在python scrip中使用

2024-09-21 01:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
I need to securely store a username and password in Python, what are my options?

我正在寻找一种方法来安全地存储我打算在一些Python脚本中使用的密码。我将登录到不同的东西,我不想把密码作为明文存储在脚本本身。

相反,我想知道是否有什么东西能够安全地存储这些密码,然后使用主密码之类的东西检索它们,我可以在开始时输入到脚本中。


Tags: andtostorein脚本密码myusername
3条回答

我通常有一个secrets.py,它与其他python脚本分开存储,不受版本控制。然后,只要需要,就可以执行from secrets import <required_pwd_var>。这样,您就可以依赖内置文件安全系统中的操作系统,而无需重新发明自己的操作系统。

使用Base64编码/解码也是混淆密码的另一种方法,尽管不完全安全

更多-Hiding a password in a python script (insecure obfuscation only)

安全的方法是使用AES加密敏感数据,加密密钥是通过基于密码的密钥派生函数(PBE)派生的,PBE是用于加密/解密AES加密密钥的主密码。

master password -> secure key-> encrypt data by the key

你可以使用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)

确保存储salt/iv/passphrase,并使用相同的salt/iv/passphase解密

Weblogic使用类似的方法来保护配置文件中的密码

你自己知道万能钥匙。不要硬编码。

使用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)

把salt和hashed密码保存在某个地方,这样每当需要使用密码时,您就可以读取加密的密码,并根据您再次输入的原始密码进行测试。

这就是现在登录的基本工作方式。

相关问题 更多 >

    热门问题