Tornar al Blog

La Guia Completa sobre Codificació Base64: Què És i Per Què la Utilitzem

UtilX Publicat el 12/6/2025 Actualitzat el 28/7/2026 9 min lectura

Base64 Encoding

Si heu passat una mica de temps treballant en desenvolupament web, administració de sistemes o ciberseguretat, sens dubte us heu trobat amb cadenes de text que semblen un galimat absolut, que acaben amb un o dos signes iguals (com ara SGVsbG8gV29ybGQ=).

Això és Base64. És un dels esquemes de codificació més fonamentals utilitzats a tot el panorama digital. Des dels correus electrònics que envieu cada dia als testimonis web JSON (JWT) que asseguren les vostres aplicacions preferides, Base64 és el cavall de batalla silenciós d'Internet.

Però què és exactament? Per què ho necessitem? I com funciona sota el capó? Submergem-nos.

Què és Base64?

Per entendre Base64, primer hem d'entendre el problema que resol.

Els ordinadors es comuniquen mitjançant dades binàries (0s i 1s). Tanmateix, molts dels protocols fonamentals d'Internet, com SMTP (Simple Mail Transfer Protocol) per al correu electrònic o HTTP/HTML bàsic, es van dissenyar originalment fa dècades per transmetre i rebre només text ASCII (l'alfabet anglès bàsic, els números i la puntuació habitual).

Si intenteu enviar dades binàries en brut (com un fitxer .exe compilat o una imatge JPEG) mitjançant un protocol basat en text heretat, el servidor receptor interpretaria els bytes binaris com a caràcters de control aleatoris i il·legibles. Destrossaria les dades, corrompint el fitxer completament.

Base64 és una capa de traducció. Pren dades binàries en brut i il·legibles i les empaqueta de manera segura en una cadena de caràcters ASCII estàndard i compatibles universalment.

El nom "Base64" prové del fet que utilitza un alfabet de 64 caràcters exactament per representar les dades:

  • Lletres majúscules: "A-Z" (26)
  • Lletres minúscules: "a-z" (26)
  • Números: "0-9" (10)
  • Símbols: + i / (2)

(Nota: el signe igual = s'utilitza exclusivament com a caràcter de farciment al final de la cadena).

Com funciona Base64 (Les matemàtiques)

El procés de codificació de dades a Base64 és molt elegant. Aquí teniu un desglossament simplificat de l'algorisme:

  1. Preneu l'entrada: L'ordinador pren les dades en brut i les mira com un flux continu de bits binaris (0 i 1).
  2. Agrupa per 24 bits: L'algorisme pren 3 bytes de dades alhora. Com que 1 byte = 8 bits, 3 bytes són iguals a 24 bits.
  3. Dividir en trossos de 6 bits: A continuació, aquests 24 bits es divideixen en 4 trossos de 6 bits cadascun (4 x 6 = 24).
  4. Mapa a l'alfabet: Un nombre binari de 6 bits pot representar exactament 64 valors diferents (de 0 a 63). L'algoritme pren el valor decimal de cada fragment de 6 bits i l'assigna al caràcter corresponent de l'índex de l'alfabet Base64.

Com que Base64 converteix 3 bytes de dades originals en 4 bytes de text ASCII, La codificació Base64 augmenta la mida del fitxer aproximadament un 33%.

Base64 NO és xifratge

Aquesta és la concepció errònia més comuna i perillosa entre els desenvolupadors júniors. Base64 ofereix zero seguretat.

La codificació és simplement traducció. De la mateixa manera que traduir una frase de l'anglès a l'espanyol no "amaga" el significat de la frase a qualsevol que parli espanyol, la codificació de dades en Base64 no l'amaga a ningú que sàpiga descodificar-la.

Base64 no protege contrasenyes. Per emmagatzemar contrasenyes cal una funció específica de derivació de clau o hash de contrasenyes, com Argon2id, scrypt o bcrypt, amb salts únics i paràmetres adequats. El xifratge serveix per a una altra finalitat quan cal recuperar el secret.

Casos d'ús pràctic comuns

Aleshores, on s'utilitza realment Base64 en el desenvolupament modern?

1. URIs de dades en desenvolupament web

En lloc de fer una sol·licitud HTTP per carregar una petita icona o logotip, els desenvolupadors poden codificar el fitxer d'imatge a Base64 i incrustar-lo directament al seu fitxer HTML o CSS:

.background '{'
  background-image: url(''data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=='');
'}'

Aquesta tècnica estalvia les sol·licituds de xarxa, la qual cosa pot accelerar la representació de la pàgina, tot i que només es recomana per a imatges molt petites a causa de la mida del 33%.

2. Fitxes web JSON (JWT)

Les aplicacions web modernes utilitzen JWT per a l'autenticació dels usuaris. Un JWT consta d'una capçalera, una càrrega útil i una signatura. La capçalera i la càrrega útil (que contenen les dades de l'usuari) estan codificades a Base64Url (una versió lleugerament modificada de Base64 que substitueix + i / per - i _ per ser segur per utilitzar-lo en URL). Això permet que els objectes JSON complexos es passin de manera segura d'anada i tornada a les capçaleres HTTP.

3. Autenticació bàsica

A les API i sistemes antics, l'autenticació bàsica HTTP s'utilitza agafant el nom d'usuari i la contrasenya, unint-los amb dos punts ('nom d'usuari:contrasenya') i codificant el resultat en Base64. A continuació, s'envia a la capçalera "Autorització". (Un cop més, això s'ha de fer mitjançant HTTPS, ja que la cadena Base64 es descodifica fàcilment!).

4. Fitxers adjunts de correu electrònic (MIME)

Quan adjunteu un PDF o una foto a un correu electrònic, el vostre client de correu electrònic codifica automàticament el fitxer binari a Base64 sota el capó perquè els servidors SMTP heretats puguin dirigir el text de manera segura a la safata d'entrada del destinatari, on es descodifica de nou al fitxer.

Conclusió

Base64 és una solució brillant i senzilla a un problema d'infraestructura complexa. Mitjançant la traducció de dades binàries complexes a caràcters de text segurs i universalment acceptats, permet que la Internet moderna i rica en mitjans funcioni a més dels protocols heretats.

Sempre que necessiteu inspeccionar un JWT, extreure una imatge d'un fitxer CSS o depurar una sol·licitud d'API, és essencial tenir un descodificador local Base64 ràpid, segur. Consulteu la nostra eina Base64 del costat del client completament privada a UtilX per codificar i descodificar de manera segura les vostres dades a l'instant!

Base64 resol un problema de transport: representar bytes amb caràcters quan un camp, un missatge MIME o una API textual no admet dades binàries directes. No fa un fitxer més eficient i no en protegeix el contingut. Per a una imatge o un PDF gran és millor una càrrega binària o una URL; Base64 té sentit només quan el format receptor l’exigeix explícitament.

Un exemple reproduïble ha de començar pels bytes UTF-8, no per la interpretació casual del navegador. La cadena café 日本語 es codifica a UTF-8, s’encoda en Base64, es descodifica a bytes i es torna a interpretar com UTF-8. Comparar el resultat amb l’original detecta errors amb accents i escriptures no llatines. btoa() treballa amb una cadena de bytes; per això necessita una conversió UTF-8 explícita abans d’usar text Unicode.

El procediment estàndard pren tres bytes, és a dir 24 bits, els divideix en quatre sextets de sis bits i associa cada valor a l’alfabet de RFC 4648. Si queda un byte, la sortida acaba amb dos símbols útils i ==; si en queden dos, amb tres símbols i =. En descodificar, inverteix el mapa i comprova els bytes reconstruïts, no només l’aspecte del text.

Base64 estàndard usa + i /. Base64URL els canvia per - i _, i molts protocols ometen el farciment final =. Un JWT acostuma a usar Base64URL per a capçalera i càrrega útil, però això no les xifra. No lliuris una cadena Base64URL a un descodificador Base64 estricte sense restaurar l’alfabet i, si el receptor ho demana, el farciment corresponent.

Cada tres bytes es converteixen en quatre caràcters; per tant, la càrrega creix aproximadament un terç abans d’escapar JSON, afegir salts MIME o un prefix data URL. El cost és assumible per a una icona petita o un camp de protocol, però és malbaratament per a un PDF de diversos megabytes. MIME pot inserir salts de línia; una API JSON sol requerir una sola cadena contínua.

La majoria d’errors confonen text i bytes. Una suposició Latin-1 pot corrompre un accent; espais enganxats o salts MIME poden fer fallar un descodificador estricte; l’absència de = pot ser correcta en Base64URL i incorrecta en Base64 estàndard. Un data URL també té un prefix de tipus de contingut abans de la coma que no forma part de la càrrega. Redueix el cas a Hello i anota variant, longitud i codificació.

Base64 és codificació reversible, no xifratge, hash ni emmagatzematge de contrasenyes. Qualsevol persona que rep una contrasenya codificada la pot recuperar. Una base de dades de contrasenyes necessita una funció específica de hash o derivació de clau, com Argon2id, scrypt o bcrypt, amb salts únics i paràmetres adequats. RFC 4648 i la documentació MDN de btoa() i atob() expliquen representació de dades, no controls de seguretat.

Per comprovar una conversió d’anada i tornada, anota la longitud dels bytes, codifica una vegada, identifica si és Base64 estàndard o Base64URL i descodifica amb la rutina coincident. Compara cada byte o cada caràcter UTF-8 amb l’entrada i prova l’API receptora amb la forma exacta esperada. No carreguis fitxers molt grans només per codificar-los al navegador: els bytes originals, la cadena i una còpia descodificada poden coexistir a la memòria. Elimina secrets de registres i exemples.