python - 无法使用 Cryptography Python 包解密消息
问题描述
我想加密消息
message = b'gAAAAABc8Wf3rxaime-363wbhCaIe1FoZUdnFeIXX_Nh9qKSDkpBFPqK8L2HbkM8NCQAxY8yOWbjxzMC4b5uCaeEpqDYCRNIhnqTK8jfzFYfPdozf7NPvGzNBwuuvIxK5NZYJbxQwfK72BNrZCKpfp6frL8m8pdgYbLNFcy6jCJBXATR3gHBb0Y='
当给出钥匙时。
key=b'8cozhW9kSi5poZ6TWFuMCV123zg-9NORTs3gJq_J5Do='
我已经用 Python 3 在 Jupyter notebook 上运行了下面的程序。它成功地用代码解密和加密了一个例子。但是,在加密消息的情况下给出了错误消息。
成功案例
# Import Package
from cryptography.fernet import Fernet
# Generate a Key
key=b'8cozhW9kSi5poZ6TWFuMCV123zg-9NORTs3gJq_J5Do='
# Define our message
plaintext = b"HelloWorld!"
# Encrypt
ciphertext = f.encrypt(plaintext)
print(ciphertext)
# Decrypt
decryptedtext = f.decrypt(ciphertext)
print(decryptedtext)
#output
b'HelloWorld!'
# Import Package
from cryptography.fernet import Fernet
# Generate a Key and Instantiate a Fernet Instance
#key = Fernet.generate_key()
key=b'8cozhW9kSi5poZ6TWFuMCV123zg-9NORTs3gJq_J5Do='
#f = Fernet(key)
print(key)
错误信息
---------------------------------------------------------------------------
InvalidSignature Traceback (most recent call last)
/opt/conda/lib/python3.6/site-packages/cryptography/fernet.py in decrypt(self, token, ttl)
100 try:
--> 101 h.verify(data[-32:])
102 except InvalidSignature:
/opt/conda/lib/python3.6/site-packages/cryptography/hazmat/primitives/hmac.py in verify(self, signature)
68 ctx, self._ctx = self._ctx, None
---> 69 ctx.verify(signature)
/opt/conda/lib/python3.6/site-packages/cryptography/hazmat/backends/openssl/hmac.py in verify(self, signature)
72 if not constant_time.bytes_eq(digest, signature):
---> 73 raise InvalidSignature("Signature did not match digest.")
InvalidSignature: Signature did not match digest.
During handling of the above exception, another exception occurred:
InvalidToken Traceback (most recent call last)
<ipython-input-21-151f5b825577> in <module>()
1 # Decrypt
2 message = b'gAAAAABc8Wf3rxaime-363wbhCaIe1FoZUdnFeIXX_Nh9qKSDkpBFPqK8L2HbkM8NCQAxY8yOWbjxzMC4b5uCaeEpqDYCRNIhnqTK8jfzFYfPdozf7NPvGzNBwuuvIxK5NZYJbxQwfK72BNrZCKpfp6frL8m8pdgYbLNFcy6jCJBXATR3gHBb0Y='
----> 3 decryptedtext = f.decrypt(message)
4 print(decryptedtext)
/opt/conda/lib/python3.6/site-packages/cryptography/fernet.py in decrypt(self, token, ttl)
101 h.verify(data[-32:])
102 except InvalidSignature:
--> 103 raise InvalidToken
104
105 iv = data[9:25]
InvalidToken:
解决方案
推荐阅读
- tabulator - Tabulator 编辑器打开时选择所有内容
- git - 如何只推送构建文件
- python-3.x - 如何格式化 pandas 数据框中的列名?
- swift - 在自定义 UITabBarController (Swift) 中以编程方式导航
- react-native - 从 Expo 错误中弹出 - 未找到 SDK 位置
- plot - 鼠尾草的 3dplot 中的 z 轴太长
- javascript - 如果文件是带有 Vue.js 的音频或视频文件,我如何根据 url 检查
- python - Kubernetes pod 中的名称解析失败
- c - 在其他文件中以 typedef 作为参数的函数声明
- html - 代码未在 Html (Flask) 中执行和显示