Сценарий:
Я читаю о веб-токенах JSON по этой ссылке (https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec). В нем рассказывается, как создать веб-токен JSON, вы создаете заголовоки полезную нагрузку, а затем создайте подпись, используя следующий псевдокод:
data = base64urlEncode( header ) + “.” + base64urlEncode( payload )
hashedData = hash( data, secret )
signature = base64urlEncode( hashedData )
Мой вопрос:
Почему псевдокод использует base64urlEncode
при создании data
и signature
?
Возможности того, что я понимаю до сих пор:
Base64 позволяет выражать двоичные данные, используя текстовые символы из набора 64 64 символов текста Base64.Обычно это используется, когда у вас есть набор данных, которые вы хотите передать через какой-то канал, который может неправильно интерпретировать некоторые символы, но будет , а не неправильно интерпретировать символы Base64, поэтому вы кодируете его с помощью Base64, так чтоданные не будут интерпретироваться неправильно. Кодировка URL Base64, с другой стороны, аналогична кодировке Base64, за исключением того, что вы используете только подмножество набора символов Base64, которое не содержит символов, имеющих специальныеэто означает, что в URL-адресах, так что если вы используете URL-код Base64 в URL-адресе, его значение не будет неправильно истолковано.
Предполагая, что мое понимание верно, я пытаюсь понять, почему base64urlEncode()
используется в вычислениях data
и signature
в псевдокоде выше.Будет ли подпись веб-токена JSON использоваться где-то в URL?Если да, то почему data
base64urlEncode
d перед хэшированием.Почему бы просто не кодировать подпись?Есть ли что-то в хеш-функции, которая требует, чтобы ее параметр data
был закодирован в URL Base64?
Любое понимание будет приветствоваться.Спасибо!