我在用python,flask。我用AES加密。它很好用,我加密和解密数据很容易。
为了保护加密密钥,我将加密密钥从配置文件的app表单中移走。首先我在一个配置文件中保存了一个变量,在config.cfg
中声明了ENCRYPTION_KEY
。在
[Encryption]
ENCRYPTION_KEY = b'\xbf\xc0\x85)\x10nc\x94\x02)j\xdf\xcb\xc4\x94\x9d(\x9e[EX\xc8\xd5\xbfI{\xa2$\x05(\xd5\x18'
然后在init文件中我声明:
^{pr2}$我试图从key = flask.config['ENCRYPTION_KEY']
访问它。我在控制台中打印key只是为了确保命令正常工作:
def encrypt_data(self, form_data):
key = current_app.config['ENCRYPTION_KEY']
print "KEY : " , key
cipher = AES.new(key)
//code...
现在,当我试图从配置文件中使用这个密钥时,我有一个错误消息:
这条消息之所以出现是因为我在配置文件中移动了那个键,因为正如我之前所说,我对相同的方法使用了相同的键,而且它工作得很好? 有谁能帮我,为什么我会犯这个错误?在
您使用的
ConfigParser
模块是问题的原因。给定显示的配置文件:您可以看到,
ConfigParser
只是以text的形式返回与给定配置变量相关联的值,而不是Python字符串。因为config值包含反斜杠转义序列,所以这些反斜杠用附加反斜杠转义。这将中断\x
字符序列,然后该序列将爆炸为4个字符。在最简单的方法是使用Flask的配置文件:
配置.cfg
^{pr2}$如果您不想使用Flask的配置文件,您的选项是(按优先顺序):
使用^{} 将原始字符串安全地转换为Python字符串:
Base64对配置文件中的值进行编码,例如
然后在访问密钥时对其进行解码:
使用^{} 将原始字符串转换为Python字符串:
尽管这被认为是不好/危险的做法,但最好使用
literal_eval()
或base64编码。{p>将pr}存储在二进制文件中$
但这很难维持。
相关问题 更多 >
编程相关推荐