首页 > 解决方案 > 无法使用 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: 

标签: pythonpython-3.xencryptioncryptographyjupyter-notebook

解决方案


推荐阅读