繁体   English   中英

如何在python中加密/解密配置文件

[英]How to encrypt/decrypt a configuration file in python

我有一个读取配置文件的 python 应用程序。 我需要加密配置文件,所以它在磁盘上不是普通的。 然后我需要在我的应用程序中解密它并读取值。 我看到有一个库Secureconfig但它仅适用于 python 2。python 中是否有类似的库可以帮助我做到这一点?

由于您的程序必须包含解密密钥,因此您将无法保护数据免受确定的用户的侵害,只能使解密变得更加困难。

根据Cryptographic Services-Python 3.7.3文档的规定 ,Python不包含任何现成的真实密码。 只有codecs具有凯撒(Caesar)的密码和标准编码,才能像UUEncode和Base64这样可恢复地处理数据。

因此,如果以上内容不足以满足您的需要,则您需要自己实施对称密码或使用库。 参见例如不带额外模块的Python AES加密

由于这里不可能提供真正的安全性,因此,要想让被黑客入侵的用户很难,安全性就取决于模糊性 :使用非标准密码,不要一次解密所有文件,请在许多不同的地方进行加密/解密,使用混淆代码,添加隐藏的校验和以防止篡改,使用文件外部存储在其他意外位置中的数据位等。

如果您只是想使临时用户无法理解该文件,那么在使用文本编辑器查看时,将Base64与XOR cipher结合使用将使数据完全无法理解。

@HZ-正如Ivan指出的那样,有多种选择取决于您想要的安全级别。

我正在与您所描述的项目进行类似的项目,并且正在使用cryptogrophay库( https://cryptography.io/en/latest/

您可以使用pip轻松安装它。

我正在一步一步地使用它来加密我的配置文件-然后在我的主Python文件中有一个单独的脚本进行解密。 解密脚本中将包含从加密脚本生成的密钥。

如果您尚未解决此问题,希望此信息对您有所帮助。

打算稍微挖掘一下这个线程。 我编写了一个 ConfigParser 继承类,它将 AES-256 对称加密添加到 ConfigParser 配置文件中。 该类本身以及它的底层加密已经为几个项目投入生产,并且经过了很好的测试。

用法与 ConfigParser 非常相似,不同之处在于您使用 AES 密钥并编写二进制文件而不是文本。

使用pip install configparser_crypt

如何使用 ConfigParserCrypt 创建加密的 ini 文件

from confiparser_crypt import ConfigParserCrypt

file = 'config.encrypted'
conf_file = ConfigParsercrypt()

# Create new AES key
conf_file.generate_key()
# Don't forget to backup your key somewhere
aes_key = conf_file.aes_key

# Use like normal configparser class
conf_file.add_section('TEST')
conf_file['TEST']['foo'] = 'bar'

# Write encrypted config file
with open(file, 'wb') as file_handle:
    conf_file.write_encrypted(file_handle)

如何读取加密的ini文件

from confiparser_crypt import ConfigParserCrypt

file = 'config.encrypted'
conf_file = ConfigParsercrypt()

# Set AES key
conf_file.aes_key = my_previously_backed_up_aes_key

# Read encrypted config file
conf_file.read_encrypted(file)
print(conf_file['TEST']['foo'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM