Почему мой base64 закодирован дважды?
Вы декодировали строку base64 и получили снова строку base64. Ничего не сломалось, и вы не ошиблись: значение действительно было закодировано более одного раза, и каждое декодирование снимает ровно один слой.
Почти никто не кодирует дважды намеренно. Так выходит потому, что две системы сделали свою работу, не зная, что другая её уже сделала. Сервис кодирует значение, прежде чем положить его в поле; транспорт, несущий всё сообщение, кодирует и его. Секрет Kubernetes содержит значение, которое уже было base64, когда его вставили в YAML, а тот кодирует его снова. Вебхук подписывает полезную нагрузку, кодирует подпись, а цепочка доставки кодирует конверт. Система журналирования кодирует всё, что нельзя гарантированно представить в виде печатных символов, включая поле, закодированное выше по цепочке по той же причине.
Сколько слоёв, на глаз определить нельзя. Вывод base64 является допустимым вводом для base64, поэтому значение, обёрнутое один раз, и значение, обёрнутое четыре раза, — строки одного и того же вида. Единственная видимая подсказка — длина: каждый слой удлиняет текст примерно на треть, поэтому глубоко вложенные значения становятся заметно большими.
Выход — декодировать повторно, пока результат не перестанет быть base64. Вручную это значит каждый раз вставлять результат обратно во ввод и сбиваться со счёта, и именно поэтому полезен инструмент, который снимает все слои за одно действие и говорит, сколько их было.
В автоматизации есть ловушка, и её стоит знать независимо от инструмента: часть обычного текста тоже является допустимым base64. Декодер, который продолжает снимать слои, пока ввод всего лишь выглядит декодируемым, охотно превратит слово вроде "Password" в шум и сообщит о слое, которого никогда не было. Остановиться правильно труднее, чем декодировать, и тот, кто называет число слоёв, не оценивая каждый, называет догадку.