Base64 кодирует 3 байта (3 * 8 = 24 бита) в 4 символа, выбирая из 64 (6 бит) отображаемых символов (4 * 6 = 24бит) .См. Википедия для подробного описания того, как это работает.
Итак, на каждые 4 закодированных символа вы получите 3 байта.Вы вводите:
R3df 789G Sfsb 2edf SFSD Fuik uikk 2349 GSfs b2ed fSvF SDFR 3df7 89GS fsb2 edf
Как видите, это 15 блоков по 4 символа и последний блок только из 3 символов.3 символа (3 * 6 = 18 бит) может хранить 2 байта (2 * 8 = 16 бит) , оставляя 2 неиспользованных бита.Эти 2 бита могут иметь любое значение, поскольку они не используются, но стандарт для таких дополнительных битов должен быть установлен на 0.
Ваш вход от закодированного Base64, который решил установитьдополнительные биты равны 1, поэтому последний символ равен f
, а не стандартным c
.
Также довольно часто, хотя и не всегда, требуется дополнить закодированный текст полными блоками, добавив 1 или2 =
знаков в конце.Таким образом, при стандартном использовании 0 для дополнительных битов и добавлении заполнения, последний блок становится edc=
, но он декодируется в те же байты, что и нестандартный последний блок edf
.