Как расшифровать строку в кодировке base64 в C - PullRequest
0 голосов
/ 26 мая 2020

Я уже несколько дней ломаю себе голову над этим и просто не могу этого понять. У меня есть строка, это токен, который я получаю в JWT для аутентификации, и т.д. c.

Токен был создан так:

token = base64_urlsafe_encode(DATA)
DATA = IV + CIPHER_TAG + CIPHER_TEXT
IV = 16 bytes - initialization vector
CIPHER_TAG = 16 bytes - cipher tag
CIPHERTEXT = remaining bytes - encrypted(CREDENTIAL)
CREDENTIAL = <username>:<password>

Теперь я могу декодировать -base64 входящий jwt, без проблем. Но мой токен выглядит так: (изменив некоторые символы по соображениям безопасности, я изменил только буквенно-цифровые символы на 0)

token" => "00_0000000000000000000000000000000000-00_000000000000000000000000_0000_00000000000000000000000_0000000000000000000000000000000==",

Я не могу декодировать 64 в двоичный, потому что он не работает с символами "_" и " - "и ничего, кроме base64.

Кто-нибудь может помочь мне понять, как это сделать? Как они могут сказать: token = base64_urlsafe_encode(DATA), если токен содержит недопустимые (не base64) символы?

1 Ответ

1 голос
/ 26 мая 2020

JWT использует кодировку Base64url (которая немного отличается от обычной Base64). Различия заключаются в следующем:

  • Base64url заменяет + на - (минус)
  • Base64url заменяет / на _ (подчеркивание)
  • Base64url не требует символа заполнения =
...