Base64 группирует байты в 24-битные блоки и выдаёт четыре шестибитных символа. В последнем блоке может быть лишь 8 или 16 бит данных. Padding отмечает отсутствующие байты, а неиспользуемые младшие биты последнего реального символа должны быть нулями. RFC 4648 требует это для канонической записи. Иначе несколько строк декодируются в одни байты и ломают сравнение или входы подписей.
Один или два байта задают окончание
Один оставшийся байт даёт 8 бит: нужны два символа Base64, четыре неиспользуемых младших бита во втором и два равенства в padded-форме. Два байта дают 16 бит: три символа, два неиспользуемых бита и одно равенство. Три байта дают четыре символа без padding. Unpadded-профиль убирает только равенства, но не правило нулевых битов.
AA== каноничен, AB== — нет
Обе строки мягкое ПО может принять как один нулевой байт, потому что ненулевые младшие биты B отбрасываются. Канонический RFC 4648 требует, чтобы эти четыре бита были нулями, поэтому допустим только A. Base64Lens сообщает NON_CANONICAL_BITS для AB== и unpadded AB. Неоднозначная запись отклоняется до показа результата.
Строгие ошибки показывают различия интеграций
Пробелы, равенство внутри строки, более двух padding-символов, неполная padded-четвёрка и unpadded-длина с остатком один — разные ошибки. Base64Lens не удаляет переносы и не восстанавливает padding, потому что это правила MIME или другого формата. Сопоставьте настройки со спецификацией источника и сравните результат с целевой библиотекой на проверенных несекретных примерах.