Tecnología · GUÍA PRÁCTICA
¿validate=True acepta dos Base64 en Python? Exige bits de relleno canónicos
La validación estricta del alfabeto no equivale a la codificación canónica de RFC 4648. Usa canonical=True en Python 3.15+ o decodifica, recodifica y compara en versiones anteriores.

validate=True comprueba el alfabeto y la estructura del relleno, pero en Python 3.14 y anteriores todavía puede aceptar alias Base64 cuyos bits de relleno no usados no son cero. Varias cadenas se decodifican a los mismos bytes.
En Python 3.15 usa canonical=True. En versiones anteriores, decodifica de forma estricta, vuelve a codificar con la misma política y compara exactamente. Una forma canónica no autentica los datos.
1. El resultado es real
En CPython 3.12.14 las tres entradas producen c1. validate=True no comprueba los bits de relleno en esas versiones.
El codificador genera una forma canónica; el comportamiento muchos-a-uno nace cuando el decodificador ignora bits sin uso.
2. Por qué existen alias
Con un byte de entrada, solo dos bits del segundo símbolo llevan datos y los otros cuatro son relleno. RFC 4648 exige que el codificador los ponga a cero.
Validez sintáctica, bytes decodificados y texto canónico son decisiones distintas.
3. Python 3.15
Usa base64.b64decode(value, validate=True, canonical=True); el alias lanza binascii.Error.
Declara también la política de relleno, espacios y alfabeto URL-safe.
4. Versiones anteriores
Decodifica con validate=True, recodifica con base64.b64encode y exige igualdad exacta con la entrada ASCII.
No arregles cualquier entrada añadiendo signos igual; un protocolo sin relleno o URL-safe necesita su propia forma canónica.
5. Cuándo importa
Los alias dividen la identidad si el texto Base64 se usa como clave, caché, deduplicación, allow-list, entrada de firma o identificador de auditoría.
Compara bytes decodificados cuando sea posible; si necesitas texto, impón la forma canónica en el límite.
6. No es autenticación
Bytes maliciosos también pueden tener una codificación canónica. Verifica una firma digital o MAC.
Prueba el valor canónico, un alias, caracteres inválidos, relleno incorrecto y cada variante admitida.
