Декодирование base64 после удаления заполнения

#algorithm #encoding #base64 #implementation #decoding

#алгоритм #кодирование #base64 #реализация #декодирование

Вопрос:

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

И связанный с этим вопрос, может ли = знак существовать в строке, закодированной в base64, кроме как в качестве дополнения, т. Е. Если это не зависит от реализации, безопасно ли просто удалять конечные знаки равенства или возможно, что последним «реальным» символом мог быть один?

Ответ №1:

Хотя для декодирования строки base64 заполнение не требуется, существуют некоторые реализации, которые выдают ошибку, если заполнение было удалено.

В RFC говорится:

 Implementations MUST include appropriate pad characters at the end of
   encoded data unless the specification referring to this document
   explicitly states otherwise.
  

Символ = всегда будет использоваться только для заполнения.