Невозможно, кроме cryptography.fe rnet. InvalidToken Ошибка в Python - PullRequest
1 голос
/ 29 марта 2020

Я пробовал это:

from cryptography import *
try:
    #code here to create key from a password
    f=Fernet(key)
    token=f.decrypt(data)
except cryptography.fernet.InvalidToken:
    print("wow")

, но все равно возникает ошибка.

1 Ответ

1 голос
/ 29 марта 2020

из документов :

расшифровывать (токен, ttl = нет)

Повышает:

  • cryptography.fe rnet .InvalidToken - если токен каким-либо образом недействителен, возникает это исключение. Токен может быть недействительным по ряду
    причин: он старше, чем ttl, имеет неправильный формат или
    не имеет действительной подписи.
  • TypeError - Это исключение возникает, если токен не является байтом.

Вы также должны использовать:

from cryptography import *
import cryptography

try:
    #code here to create key from a password
    f=Fernet(key)
    token=f.decrypt(data)
except (cryptography.fernet.InvalidToken, TypeError):
    print("wow")

, также key должны быть байтами - URL-безопасный 32-байтовый кодированный base64 ключ.


, если у вас есть следующее сообщение об ошибке:

Error: Incorrect padding

это генерируется, потому что в конструкторе класса Fernet он применяет base64.decodestring к вашему key

key = base64.urlsafe_b64decode(key)

чтобы поймать ошибку, которую вы можете использовать:

from binascii import Error
from cryptography import *
import cryptography

try:
    #code here to create key from a password
    f=Fernet(key)
    token=f.decrypt(data)
except (cryptography.fernet.InvalidToken, TypeError, Error):
    print("wow")
...