安全地存储密码在python脚本使用[复制](Securely storing passwords

2019-06-27 04:27发布

可能重复:
我需要安全地存储在Python用户名和密码,我有哪些选择?

我在寻找一种方式来安全地存储我打算在一些Python脚本,以使用密码。 我会登录到不同的东西,我不希望将密码存储在脚本本身的明文。

相反,我在想,如果有什么,它能够安全地存储这些密码,然后使用类似一个主密码,我可以在一开始就进入到文字检索。

Answer 1:

知道主密钥自己。 不要硬编码。

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

保存盐和散列密码的地方。所以每当你需要使用的密码,您正在阅读的加密密码,并测试对您再次输入密码原料。

这基本上是登录如何工作的这些日子。



Answer 2:

我通常有一个secrets.py是从我的其他Python脚本分开存放,是不是版本控制之下。 然后在需要时,你可以做from secrets import <required_pwd_var> 这样,您就可以依靠操作系统内置的文件安全系统,而无需重新发明自己。

使用Base64编码/解码也是另一种方式来混淆虽然不是完全安全的密码

这里更多- 隐藏在Python脚本密码(不安全混淆只)



Answer 3:

羊城通由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的使用类似的方法来保护配置文件中的密码



文章来源: Securely storing passwords for use in python script [duplicate]