Salta al contingut

Codificador Descodificador Base64 - Eina Gratuïta de Conversió Base64 en Línia

Eina gratuïta de codificació i descodificació base64. Converteix text a Base64 o descodifica cadenes Base64 a l'instant. Admet codificació estàndard i URL-segura. No cal iniciar sessió.

Codificador/Descodificador Base64

Convertir text a i des de codificació Base64

Calculadora de càrrega...
📚

Documentació

Què és la codificació Base64?

Base64 és una manera de convertir qualsevol dada, incloses dades binàries com les imatges, en text pla format només per lletres, dígits i alguns símbols. Un codificador Base64 converteix les dades en aquesta forma de text. Un descodificador Base64 les torna a convertir en les dades originals. Els programes utilitzen Base64 per moure dades binàries de manera segura a través de sistemes, com ara el correu electrònic o JSON, que esperen text pla.

Base64 utilitza un alfabet de 64 caràcters:

  • Lletres majúscules A–Z (26 caràcters)
  • Lletres minúscules a–z (26 caràcters)
  • Dígits 0–9 (10 caràcters)
  • Dos símbols, normalment + i / (2 caràcters)

Alguns sistemes també utilitzen un signe igual (=) al final de la sortida com a farciment. El farciment no forma part de l’alfabet de 64 caràcters; només completa la longitud.

Per què existeix Base64

Molts protocols de text antics, inclòs el correu electrònic (SMTP) i algunes parts d’HTTP, es van crear per transportar text ASCII de 7 bits. Poden corrompre bytes binaris en brut, com els bytes que hi ha dins d’una imatge JPEG. Base64 ho evita representant cada byte només amb caràcters segurs i imprimibles. Per això els fitxers adjunts de correu electrònic, les imatges incrustades en pàgines web i els camps binaris dins de JSON passen habitualment primer per Base64.

Base64 no és compressió ni xifratge. La sortida codificada sempre és més gran que l’entrada i qualsevol persona la pot descodificar sense una contrasenya ni una clau.

Com s’utilitza aquesta eina

  1. Escriviu o enganxeu text al quadre d’entrada.
  2. Trieu «Encode to Base64» per convertir text en Base64, o «Decode from Base64» per convertir una cadena Base64 de nou en text.
  3. Activeu la conversió en directe perquè la sortida s’actualitzi automàticament mentre escriviu.
  4. Copieu el resultat amb el botó de còpia.

L’eina llegeix i escriu text Unicode estàndard, de manera que les lletres accentuades, els símbols i els emoji es codifiquen i descodifiquen correctament, no només les lletres planes de l’anglès.

Com funciona la codificació Base64

Base64 converteix cada 3 bytes de l’entrada (24 bits) en 4 caràcters de sortida (cadascun conté 6 bits), perquè 24 dividit per 6 és igual a 4.

  1. Es prenen els bytes d’entrada i s’escriuen en binari.
  2. S’agrupen els bits en blocs de 24 bits (3 bytes).
  3. Cada bloc de 24 bits es divideix en quatre parts de 6 bits.
  4. Es busca cada nombre de 6 bits (de 0 a 63) a l’alfabet Base64 i s’escriu el caràcter corresponent.

Si la longitud de l’entrada no és múltiple de 3, l’últim bloc és més curt. El codificador l’omple amb bits zero i després afegeix caràcters = a la sortida perquè el resultat continuï apareixent en grups de 4:

  • Un byte sobrant produeix 2 caràcters Base64 més ==.
  • Dos bytes sobrants produeixen 3 caràcters Base64 més un =.

Exemple de codificació Base64

Codificació de la paraula «Hello»:

  1. Valors ASCII: 72, 101, 108, 108, 111
  2. Binari: 01001000 01100101 01101100 01101100 01101111
  3. Els primers 3 bytes (24 bits) es divideixen en quatre grups de 6 bits: 010010 000110 010101 101100, que corresponen als nombres 18, 6, 21 i 44 → caràcters S, G, V i s.
  4. Els 2 bytes restants (16 bits) es divideixen en tres grups de 6 bits, amb 2 bits zero afegits al final: 011011 000110 111100, que corresponen als nombres 27, 6 i 60 → caràcters b, G i 8.
  5. Com que sobraven 2 bytes, s’afegeix un = al final.
  6. Resultat: SGVsbG8=

La descodificació inverteix aquests passos: cada caràcter es torna a mapar al seu nombre de 6 bits, els bits s’uneixen en un flux i aquest flux es torna a llegir en bytes de 8 bits.

Fórmula de la longitud codificada en Base64

Per a una entrada de n bytes, la longitud codificada en caràcters és:

encoded_length = 4 × ⌈n / 3⌉

on ⌈x⌉ significa arrodonir cap amunt al nombre enter més proper. Aquesta fórmula mostra per què la sortida Base64 sempre és aproximadament un terç més gran que l’entrada: 4 caràcters de sortida per cada 3 bytes d’entrada representen un augment del 33 %.

On s’utilitza Base64

  • Fitxers adjunts de correu electrònic (MIME). El correu electrònic es va crear per al text, de manera que els fitxers adjunts es converteixen en Base64 abans d’enviar-los, cosa que fa que el fitxer adjunt sigui aproximadament un 33 % més gran que l’original.
  • URI de dades. Les imatges petites es poden incrustar directament en HTML o CSS com a text, per exemple data:image/png;base64,iVBORw0KGgo..., evitant una sol·licitud de fitxer separada. Això funciona millor amb fitxers petits, ja que els grans augmenten molt la mida de la pàgina i no es poden desar a la memòria cau per separat.
  • API i JSON. JSON no té cap manera nativa de contenir dades binàries en brut, de manera que els fitxers binaris enviats mitjançant una API JSON sovint es codifiquen primer en Base64.
  • Autenticació bàsica HTTP. La capçalera Authorization codifica un nom d’usuari i una contrasenya com a Base64, per exemple Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Això no és segur per si sol; qualsevol persona que intercepti les credencials les pot llegir, de manera que l’autenticació bàsica només s’hauria d’utilitzar mitjançant HTTPS.
  • JSON Web Tokens (JWT). Cadascuna de les tres parts d’un JWT es codifica amb Base64URL, una variant segura per col·locar dins d’un URL.
  • Emmagatzematge de dades binàries com a text. Les bases de dades o els fitxers de configuració que només accepten text de vegades contenen dades binàries com una cadena Base64.

Base64 en comparació amb altres codificacions

Base64 segura per a URL substitueix els caràcters estàndard + i / pels caràcters - i _, perquè + i / tenen un significat especial dins d’un URL. S’utilitza per als JWT, els paràmetres de consulta dels URL i els noms de fitxer. Aquesta eina produeix una sortida Base64 estàndard; per convertir-la al format segur per a URL només cal intercanviar aquests dos caràcters.

Base32 utilitza un alfabet de 32 caràcters, de manera que cada caràcter conté 5 bits en lloc de 6. Converteix cada 5 bytes en 8 caràcters, amb una sobrecàrrega del 60 % (8 ÷ 5 = 1,6), en comparació amb el 33 % de Base64. Base32 s’escull quan la sortida s’ha d’escriure manualment o llegir per telèfon, perquè evita les lletres majúscules i minúscules barrejades i els caràcters que es confonen fàcilment.

Hexadecimal utilitza 16 caràcters (0–9, A–F) i necessita 2 caràcters per byte, de manera que duplica la mida (100 % de sobrecàrrega). És habitual per mostrar resums criptogràfics, colors i adreces MAC, en què la llegibilitat importa més que la mida compacta.

Quan no s’ha d’utilitzar Base64

Base64 augmenta la mida i el cost de CPU, de manera que no és adequada per a fitxers grans enviats per una xarxa; enviar directament les dades binàries en brut ocupa menys i és més ràpid. No s’ha d’utilitzar mai per ocultar informació sensible, com ara contrasenyes o claus d’API, ja que per descodificar-la no cal cap secret. Per emmagatzemar fitxers grans, normalment és millor el tipus de columna binària d’una base de dades o un servei d’emmagatzematge de fitxers que una cadena Base64 llarga en un camp de text.

Errors habituals

  • Ometre la conversió a UTF-8. Codificar text amb lletres accentuades o emoji sense convertir-lo abans en bytes UTF-8 pot corrompre la sortida.
  • Eliminar el farciment. Alguns sistemes eliminen els caràcters = finals. La majoria de descodificadors encara poden funcionar si la longitud de la cadena es torna a completar fins a un múltiple de 4, però no tots ho accepten, de manera que és més segur conservar el farciment.
  • Salts de línia sobrants. Els codificadors MIME antics insereixen un salt de línia cada 76 caràcters; la majoria dels descodificadors moderns esperen una cadena contínua sense salts.
  • Confondre les variants. Base64 estàndard i Base64 segura per a URL utilitzen caràcters diferents per a les mateixes dues posicions de l’alfabet; la descodificació amb la variant incorrecta produeix dades inintel·ligibles o genera un error.

Preguntes més freqüents

Base64 és una forma de xifratge? No. És una codificació de text reversible, no un xifratge. Qualsevol persona pot descodificar instantàniament una cadena Base64 sense contrasenya. Cal utilitzar un algorisme de xifratge com AES si les dades han de mantenir-se secretes.

Per què Base64 fa que les dades siguin més grans? Perquè utilitza un caràcter sencer per transportar només 6 bits, mentre que un byte en brut conté 8 bits. Convertir 3 bytes (24 bits) en 4 caràcters significa que la sortida és 4/3, és a dir, aproximadament un 33 % més gran que l’entrada.

Base64 pot codificar imatges i altres fitxers binaris? Sí. Qualsevol fitxer binari, incloses imatges, PDF i àudio, es pot codificar en Base64 i descodificar de nou byte per byte. S’utilitza habitualment per a imatges petites incrustades en HTML o CSS, però no és una bona opció per a fitxers grans.

Quina diferència hi ha entre Base64 i Base64URL? Base64URL intercanvia els caràcters estàndard + i / pels caràcters - i _, de manera que el resultat es pot col·locar en un URL o un nom de fitxer sense escapament addicional. Els JWT utilitzen Base64URL per aquest motiu.

Per què la meva cadena Base64 dona un error «invalid» en descodificar-la? Les causes més habituals són els caràcters que no pertanyen a l’alfabet Base64, com ara - i _, utilitzats per la variant segura per a URL, o una cadena la longitud de la qual és una unitat més que un múltiple de 4. Cap cadena Base64 vàlida té aquesta longitud. La descodificació també falla quan els bytes descodificats no són text UTF-8 vàlid. Aquesta eina ignora els espais i els salts de línia dins de la cadena i també descodifica una cadena a la qual s’ha eliminat el farciment final =.

D’on prové Base64? La tècnica es remunta als primers sistemes per enviar dades binàries mitjançant sistemes de correu que només admetien text, durant la dècada dels 1980, i es va estandarditzar formalment com a part de MIME a RFC 2045 el 1996. L’especificació de referència actual per a Base64, Base32 i Base16 és RFC 4648.