🛠️

Whiz Tools

Build • Create • Innovate

Base64 kodētājs un dekodētājs: Teksta konvertēšana uz/ no Base64

Bezmaksas tiešsaistes rīks, lai kodētu tekstu uz Base64 vai dekodētu Base64 virknes atpakaļ tekstā. Atbalsta standarta un URL-drošu Base64 kodēšanu ar tūlītēju konversiju.

Base64 kodētājs/dekodētājs

Pārvērst tekstu Base64 kodēšanā un no tās

Kopēt
📚

Dokumentācija

Base64 Kodu un Dekodēšana

Ievads

Base64 ir binārā uz teksta kodēšanas shēma, kas pārstāv bināros datus ASCII virkņu formātā. Tā ir izstrādāta, lai pārvadātu datus, kas glabājas bināros formātos, pa kanāliem, kas uzticami atbalsta tikai teksta saturu. Base64 kodēšana pārvērš bināros datus 64 rakstzīmju kopā (tāpēc nosaukums), kas var tikt droši pārsūtīti caur teksta balstītiem protokoliem bez datu bojājumiem.

Base64 rakstzīmju kopā ietilpst:

  • Lielie burti A-Z (26 rakstzīmes)
  • Mazie burti a-z (26 rakstzīmes)
  • Cipari 0-9 (10 rakstzīmes)
  • Divas papildu rakstzīmes, parasti "+" un "/" (2 rakstzīmes)

Šis rīks ļauj jums viegli kodēt tekstu Base64 formātā vai dekodēt Base64 virknes atpakaļ to sākotnējā tekstā. Tas ir īpaši noderīgi izstrādātājiem, IT profesionāļiem un ikvienam, kas strādā ar datiem, kas jānosūta droši caur teksta balstītiem kanāliem.

Kā darbojas Base64 kodēšana

Kodēšanas process

Base64 kodēšana darbojas, pārvēršot katru trīs baitus (24 bitus) bināro datu grupu četrās Base64 rakstzīmēs. Process seko šiem soļiem:

  1. Pārvērst ievades tekstu tā binārajā attēlojumā (izmantojot ASCII vai UTF-8 kodējumu)
  2. Grupēt bināros datus 24 bitu (3 baitus) blokos
  3. Sadalīt katru 24 bitu bloku četros 6 bitu segmentos
  4. Pārvērst katru 6 bitu segmentu tā atbilstošajā Base64 rakstzīmē

Kad ievades garums nav dalāms ar 3, tiek pievienota "=" rakstzīme, lai uzturētu 4:3 attiecību starp izejas un ievades garumiem.

Matemātiskais attēlojums

Baitu secībai b1,b2,b3b_1, b_2, b_3 atbilstošās Base64 rakstzīmes c1,c2,c3,c4c_1, c_2, c_3, c_4 tiek aprēķinātas kā:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)] c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)] c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)] c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Kur Base64[i]\text{Base64}[i] apzīmē ii-to rakstzīmi Base64 alfabētā.

Dekodēšanas process

Base64 dekodēšana apgriež kodēšanas procesu:

  1. Pārvērst katru Base64 rakstzīmi tās 6 bitu vērtībā
  2. Apvienot šīs 6 bitu vērtības
  3. Grupēt bitus 8 bitu blokos (baitu)
  4. Pārvērst katru baitus tā atbilstošajā rakstzīmē

Piepildījums

Kad kodējamiem baitiem nav dalījuma ar 3, tiek piemērots piepildījums:

  • Ja paliek viens baits, tas tiek pārvērsts divās Base64 rakstzīmēs, kam seko "=="
  • Ja paliek divi baitus, tie tiek pārvērsti trijās Base64 rakstzīmēs, kam seko "="

Piemērs

Apskatīsim, kā kodēt tekstu "Hello" uz Base64:

  1. ASCII attēlojums "Hello": 72 101 108 108 111
  2. Binārais attēlojums: 01001000 01100101 01101100 01101100 01101111
  3. Grupēšana 6 bitu segmentos: 010010 000110 010101 101100 011011 000110 1111
  4. Pēdējais segments satur tikai 4 bitus, tāpēc mēs pievienojam nulles: 010010 000110 010101 101100 011011 000110 111100
  5. Pārvēršana decimālajā: 18, 6, 21, 44, 27, 6, 60
  6. Meklēšana Base64 alfabētā: S, G, V, s, b, G, 8
  7. Rezultāts ir "SGVsbG8="

Pievērsiet uzmanību "=" piepildījumam beigās, jo ievades garums (5 baitus) nav dalāms ar 3.

Formulas

Vispārējā formula Base64 kodētā virknes garuma aprēķināšanai ir:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Kur x\lceil x \rceil apzīmē griestu funkciju (noapaļošanu uz augšu līdz tuvākajam veselajam skaitlim).

Lietošanas gadījumi

Base64 kodēšana tiek plaši izmantota dažādās lietojumprogrammās:

  1. E-pasta pielikumi: MIME (Multipurpose Internet Mail Extensions) izmanto Base64, lai kodētu bināros pielikumus e-pastā.

  2. Datu URL: Mazu attēlu, fontu vai citu resursu tieša iekļaušana HTML, CSS vai JavaScript, izmantojot data: URL shēmu.

  3. API komunikācija: Droša bināro datu pārsūtīšana JSON datu kopās vai citos teksta balstītos API formātos.

  4. Bināro datu glabāšana teksta formātos: Kad binārie dati jāglabā XML, JSON vai citos teksta balstītos formātos.

  5. Autentifikācijas sistēmas: Pamata autentifikācija HTTP izmanto Base64 kodēšanu (lai gan tas nav drošības nolūkos, bet gan kodēšanai).

  6. Kryptogrāfija: Dažādu kriptogrāfisko protokolu un sistēmu daļā, bieži vien atslēgu vai sertifikātu kodēšanai.

  7. Sīkdatņu vērtības: Sarežģītu datu struktūru kodēšana, lai tās varētu glabāt sīkdatnēs.

Alternatīvas

Lai gan Base64 ir plaši izmantota, ir alternatīvas, kas var būt piemērotākas noteiktās situācijās:

  1. URL-droša Base64: Variants, kas izmanto "-" un "_" vietā "+" un "/", lai izvairītos no URL kodēšanas problēmām. Noderīgi datiem, kas tiks iekļauti URL.

  2. Base32: Izmanto 32 rakstzīmju kopu, rezultātā iegūstot garāku izeju, bet ar labāku cilvēku lasāmību un mazo burtiem.

  3. Hex kodēšana: Vienkārša pārvēršana uz heksadecimālo, kas ir mazāk efektīva (dubultojot izmēru), bet ļoti vienkārša un plaši atbalstīta.

  4. Bināra pārsūtīšana: Lieliem failiem vai kad efektivitāte ir svarīga, tieša bināra pārsūtīšanas protokoli, piemēram, HTTP ar atbilstošiem Content-Type virsrakstiem, ir priekšroka.

  5. Saspiešana + Base64: Lieliem teksta datiem, saspiešana pirms kodēšanas var mazināt izmēra pieaugumu.

  6. JSON/XML serializācija: Strukturētiem datiem, izmantošana vietējai JSON vai XML serializācijai var būt piemērotāka nekā Base64 kodēšana.

Vēsture

Base64 kodēšana ir savas saknes atradusi agrīnajā datorzinātnē un telekomunikāciju sistēmās, kur binārie dati bija jānosūta caur kanāliem, kas bija paredzēti tekstam.

Oficiālā Base64 specifikācija pirmo reizi tika publicēta 1987. gadā kā daļa no RFC 989, kas definēja privātuma uzlaboto pastu (PEM). Tas vēlāk tika atjaunināts RFC 1421 (1993) un RFC 2045 (1996, kā daļa no MIME).

Termins "Base64" nāk no tā, ka kodēšana izmanto 64 dažādas ASCII rakstzīmes, lai pārstāvētu bināros datus. Šī 64 rakstzīmju izvēle bija apzināta, jo 64 ir 2 pakāpe (2^6), kas padara pārvēršanu starp bināro un Base64 efektīvu.

Laika gaitā ir radušās vairākas Base64 variācijas:

  • Standarta Base64: Kā definēts RFC 4648, izmantojot A-Z, a-z, 0-9, +, / un = kā piepildījumu
  • URL-droša Base64: Izmanto - un _ vietā + un / lai izvairītos no URL kodēšanas problēmām
  • Failu droša Base64: Līdzīga URL-drošai, paredzēta izmantošanai failu nosaukumos
  • Modificēta Base64 IMAP protokolam: Izmantota IMAP protokolā ar atšķirīgu īpašo rakstzīmju kopu

Neskatoties uz to, ka Base64 ir vairāk nekā trīs desmitgades veca, tā joprojām ir pamata rīks mūsdienu datorzinātnē, īpaši ar web lietojumprogrammu un API pieaugumu, kas ļoti paļaujas uz teksta balstītiem datu formātiem, piemēram, JSON.

Koda piemēri

Šeit ir Base64 kodēšanas un dekodēšanas piemēri dažādās programmēšanas valodās:

1// JavaScript Base64 kodēšana/dekodēšana
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("Nederīga Base64 virkne");
11  }
12}
13
14// Piemēra izmantošana
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Kodēts:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("Dekodēts:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

Malu gadījumi un apsvērumi

Strādājot ar Base64 kodēšanu un dekodēšanu, ņemiet vērā šos svarīgos apsvērumus:

  1. Unicode un ne-ASCII rakstzīmes: Kad kodējat tekstu ar ne-ASCII rakstzīmēm, pārliecinieties, ka pirms Base64 kodēšanas tiek izmantots pareizs rakstzīmju kodējums (parasti UTF-8).

  2. Piepildījums: Standarta Base64 izmanto piepildījumu ar "=" rakstzīmēm, lai nodrošinātu, ka izejas garums ir 4 reizes lielāks par 3. Dažas implementācijas ļauj izlaist piepildījumu, kas var izraisīt saderības problēmas.

  3. Rindkopas: Tradicionālās Base64 implementācijas ievieto rindkopas (parasti katras 76 rakstzīmes) lasāmībai, taču mūsdienu lietojumprogrammās bieži vien šīs tiek izlaistas.

  4. URL-droša Base64: Standarta Base64 izmanto "+" un "/" rakstzīmes, kurām ir īpaša nozīme URL. URL kontekstos izmantojiet URL-drošu Base64, kas šīs aizstāj ar "-" un "_".

  5. Balto vietu: Dekodējot, dažas implementācijas ir iecietīgas un ignorē baltās vietas, kamēr citas prasa precīzu ievadi.

  6. Izmēra pieaugums: Base64 kodēšana palielina datu izmēru par aptuveni 33% (4 izejas baitus katriem 3 ievades baitiem).

  7. Veiktspēja: Base64 kodēšana/dekodēšana var būt resursu ietilpīga ļoti lieliem datiem. Apsveriet straumēšanas pieejas lieliem failiem.

Atsauces

  1. RFC 4648 - Base16, Base32 un Base64 datu kodējumi
  2. RFC 2045 - MIME pirmā daļa: Interneta ziņojumu ķermeņu formāts
  3. MDN Web Docs: Base64 kodēšana un dekodēšana
  4. Base64 - Vikipēdija
  5. MIME - Vikipēdija