Лучшее решение (я провел в прошлом месяце над этой проблемой на веб-сайте отправки электронной почты) - вообще не использовать символ заполнения (=)
Единственная причина, по которой там есть символ заполнения, заключается в «ленивых» декодерах. Вы можете очень легко добавить отсутствующий = -> просто сделать% 4 для текста и вычесть число, которое вы получите от 4, и это то, сколько = вам нужно добавить в конце строки. Вот код C #:
var pad = 4 - (text.Length % 4);
if (pad < 4)
text = text.PadRight(text.Length + pad, '=');
Кроме того, большинство людей, которые делают это, заинтересованы в замене + и / на другие безопасные символы URL ... Я предлагаю:
- заменить на -
/ заменить на _
НЕ ИСПОЛЬЗОВАТЬ. так как он может давать сумасшедшие результаты на разных системах / веб-серверах (например, на кодированной строке IIS Base64 не может заканчиваться. или IIS будет искать файл)