Porque é que o meu base64 está codificado duas vezes?
Descodificou uma cadeia base64 e obteve outra cadeia base64. Nada está estragado e não se enganou: o valor estava mesmo codificado mais do que uma vez, e cada descodificação retira exactamente uma camada.
Quase ninguém codifica duas vezes de propósito. Acontece porque dois sistemas fizeram o seu trabalho sem saber que o outro já o tinha feito. Um serviço codifica um valor antes de o pôr num campo; o transporte que leva a mensagem inteira codifica-a também. Um segredo do Kubernetes contém um valor que já era base64 quando alguém o colou no YAML, que volta a codificá-lo. Um webhook assina uma carga, codifica a assinatura, e a cadeia de entrega codifica o envelope. Um sistema de registo codifica tudo o que não pode garantir ser imprimível, incluindo um campo que já foi codificado antes pela mesma razão.
Não dá para saber quantas camadas existem só de olhar. A saída de base64 é entrada válida para base64, por isso um valor embrulhado uma vez e outro embrulhado quatro vezes são o mesmo tipo de cadeia. A única pista visível é o comprimento: cada camada alonga o texto cerca de um terço, portanto valores muito aninhados tornam-se visivelmente grandes.
O caminho é descodificar repetidamente até a saída deixar de ser base64. Fazê-lo à mão significa colar cada resultado outra vez na entrada e perder a conta, e é por isso que vale a pena uma ferramenta que retire todas as camadas de uma vez e diga quantas eram.
Automatizar isso tem uma armadilha, e convém conhecê-la seja qual for a ferramenta: parte do texto vulgar também é base64 válido. Um descodificador que continue a retirar camadas enquanto a entrada apenas parecer descodificável transforma alegremente uma palavra como "Password" em ruído e anuncia uma camada que nunca existiu. Parar bem é mais difícil do que descodificar, e quem indica um número de camadas sem avaliar cada uma está a indicar um palpite.