Подтвердить что ты не робот

Является ли пустая строка допустимыми базовыми 64 закодированными данными с нулевой длиной байта?

Один из моих колледжей говорил мне, что пустая строка не является допустимой строкой данных, закодированной в base64. Я не думаю, что это правда (он слишком ленив, чтобы разобрать его), но после того, как он немного поработал и даже проверил RFC, я не нашел никаких документация, в которой явно указывается, как правильно закодировать кадр с нулевой длиной байта в base64.

Итак, вопрос: есть ли у вас ссылка на какую-то официальную документацию, в которой явно указано, как нулевые байты должны быть закодированы в base64?

4b9b3361

Ответ 1

Согласно RFC 4648 Section 10, тестовые векторы,

BASE64("") = ""

Я бы предположил, что инверсия должна также сохраняться.

Ответ 2

Моя мысль об этом заключается в том, что существует два возможных значения base64, которые может произвести пустая строка; либо пустую строку, либо строку, состоящую целиком из символов пэда ('==='). Любая другая допустимая строка base64 содержит информацию. Во втором случае мы можем применить к RFC следующее правило:

Если в конце найдено больше допустимого числа символов пэда строки, например, строки базы 64, заканчивающейся символом "===", лишние символы пробела могут быть проигнорированы.

Поскольку их можно игнорировать, они могут быть удалены из результирующей закодированной строки без последствий, снова оставив нам пустую строку в качестве представления base64 пустой строки.