Python + 脚本在 /usr/lib64/python2.7 下的加密方面失败



我创建以下python脚本

此 Python 脚本将读取文件/lpp/airflow/.sec/rmq_pass到 var -pass_hash

并将其解密为decrypted_pass

more security_test.py
import sys
import os
import base64
from cryptography.fernet import Fernet
key_file = "/lpp/airflow/.sec/key"
rmq_pass_file = "/lpp/airflow/.sec/rmq_pass"
key = open(key_file, 'r')
f = Fernet(key.read())
pass_hash  = open(rmq_pass_file, 'r')
#decrypting the password from "pass_file" file using the key from the "key_file".
decrypted_pass = f.decrypt(pass_hash.read())
ConnStr = "amqp://airflow:" + decrypted_pass  + "@localhost:5672//"

当我运行脚本时 它在/usr/lib64/python2.7/site-packages/cryptography/fernet.py 或任何下/usr/lib64/python2.7/site-packages/cryptography

我们尝试重新安装软件包加密,但这没有帮助

并知道可能是什么?

python  security_test.py
Traceback (most recent call last):
File "security_test.py", line 14, in <module>
decrypted_pass = f.decrypt(pass_hash.read())
File "/usr/lib64/python2.7/site-packages/cryptography/fernet.py", line 75, in decrypt
return self._decrypt_data(data, timestamp, ttl)
File "/usr/lib64/python2.7/site-packages/cryptography/fernet.py", line 117, in _decrypt_data
self._verify_signature(data)
File "/usr/lib64/python2.7/site-packages/cryptography/fernet.py", line 101, in _verify_signature
h = HMAC(self._signing_key, hashes.SHA256(), backend=self._backend)
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/primitives/hmac.py", line 31, in __init__
self._ctx = self._backend.create_hmac_ctx(key, self.algorithm)
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 207, in create_hmac_ctx
return _HMACContext(self, key, algorithm)
File "/usr/lib64/python2.7/site-packages/cryptography/hazmat/backends/openssl/hmac.py", line 34, in __init__
key_ptr = self._backend._ffi.from_buffer(key)
TypeError: from_buffer() cannot return the address of the raw string within a str or unicode or bytearray object

重要说明 - 在其他计算机上,此脚本工作正常

解决它的最佳方法是什么?通过删除所有模块并重新安装它们?或者重新安装python?

如果这是由pip安装的,那么此问题是由于cffi软件包过时(我能够通过在virtualenv中强制安装cffi1.5 来重现此问题(。较新版本的cryptography需要cffi >= 1.8,但pip并不总是正确解决这个问题(取决于各种其他情况(。你可以pip install -U cffi看看这是否能解决这个问题,但一般来说,你应该强烈考虑在virtualenv内运行 Python 代码,而不是将包安装到全局包空间中。操作系统包管理器假定它拥有全局包,如果将分发包与pip安装混合和匹配,则可能会导致安装出现许多问题。

相关内容

  • 没有找到相关文章

最新更新