Pāriet uz saturu

Base64 kodētājs un dekodētājs - Bezmaksas tiešsaistes Base64 pārveidošanas rīks

Bezmaksas base64 kodētājs un dekodētājs. Nekavējoties pārveidojiet tekstu uz Base64 vai dekodējiet Base64 virknes. Atbalsta standarta un URL-drošu kodēšanu. Nav nepieciešama pieteikšanās.

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

Konvertēt tekstu uz un no Base64 kodējuma

Ielādes kalkulators...
📚

Dokumentācija

Kas ir Base64 kodēšana?

Base64 ir veids, kā jebkādus datus, tostarp bināros datus, piemēram, attēlus, pārvērst vienkāršā tekstā, kas sastāv tikai no burtiem, cipariem un dažiem simboliem. Base64 kodētājs pārvērš datus šādā teksta formā. Base64 dekodētājs pārvērš tos atpakaļ sākotnējos datos. Programmas izmanto Base64, lai droši pārsūtītu bināros datus caur sistēmām, piemēram, e-pastu vai JSON, kuras sagaida vienkāršu tekstu.

Base64 izmanto alfabētu, kurā ir 64 rakstzīmes:

  • Lielie burti A–Z (26 rakstzīmes)
  • Mazie burti a–z (26 rakstzīmes)
  • Cipari 0–9 (10 rakstzīmes)
  • Divi simboli, parasti + un / (2 rakstzīmes)

Dažas sistēmas izvades beigās kā papildinājumu izmanto arī vienādības zīmi (=). Papildinājums nav daļa no 64 rakstzīmju alfabēta; tas tikai aizpilda garumu.

Kāpēc pastāv Base64

Daudzi vecāki teksta protokoli, tostarp e-pasts (SMTP) un dažas HTTP daļas, tika izveidoti, lai pārsūtītu 7 bitu ASCII tekstu. Tie var sabojāt neapstrādātus bināros baitus, piemēram, JPEG attēlā esošos baitus. Base64 to novērš, attēlojot katru baitu tikai ar drošām, drukājamām rakstzīmēm. Tāpēc e-pasta pielikumi, tīmekļa lapās iegulti attēli un binārie lauki JSON datos parasti vispirms tiek pārveidoti ar Base64.

Base64 nav saspiešana un nav šifrēšana. Kodētā izvade vienmēr ir lielāka par ievadi, un ikviens to var dekodēt bez paroles vai atslēgas.

Kā izmantot šo rīku

  1. Ierakstiet vai ielīmējiet tekstu ievades laukā.
  2. Izvēlieties “Encode to Base64”, lai pārvērstu tekstu Base64 formātā, vai “Decode from Base64”, lai pārvērstu Base64 virkni atpakaļ tekstā.
  3. Ieslēdziet pārveidošanu reāllaikā, lai izvade rakstīšanas laikā tiktu automātiski atjaunināta.
  4. Nokopējiet rezultātu, izmantojot kopēšanas pogu.

Rīks lasa un raksta standarta Unikoda tekstu, tāpēc pareizi kodē un dekodē diakritiskās zīmes, simbolus un emocijzīmes, ne tikai vienkāršus angļu alfabēta burtus.

Kā darbojas Base64 kodēšana

Base64 katrus ievades 3 baitus (24 bitus) pārvērš 4 izvades rakstzīmēs (katra satur 6 bitus), jo 24 dalīts ar 6 ir 4.

  1. Ievades baitus pieraksta binārā formā.
  2. Bitus sagrupē pa 24 bitiem (3 baitiem).
  3. Katru 24 bitu grupu sadala četrās 6 bitu daļās.
  4. Katru 6 bitu skaitli (no 0 līdz 63) atrod Base64 alfabētā un pieraksta atbilstošo rakstzīmi.

Ja ievades garums nav 3 daudzkārtnis, pēdējā grupa ir īsāka. Kodētājs to papildina ar nulles bitiem un izvadei pievieno = rakstzīmes, lai rezultāts joprojām veidotos pa 4 grupām:

  • Viens atlikušais baits veido 2 Base64 rakstzīmes un ==.
  • Divi atlikušie baiti veido 3 Base64 rakstzīmes un vienu =.

Base64 kodēšanas piemērs

Vārda “Hello” kodēšana:

  1. ASCII vērtības: 72, 101, 108, 108, 111
  2. Binārais pieraksts: 01001000 01100101 01101100 01101100 01101111
  3. Pirmie 3 baiti (24 biti) tiek sadalīti četrās 6 bitu grupās: 010010 000110 010101 101100, kas atbilst skaitļiem 18, 6, 21, 44 → rakstzīmes S, G, V, s.
  4. Atlikušie 2 baiti (16 biti) tiek sadalīti trīs 6 bitu grupās, beigās pievienojot 2 nulles bitus: 011011 000110 111100, kas atbilst skaitļiem 27, 6, 60 → rakstzīmes b, G, 8.
  5. Tā kā palika 2 baiti, beigās tiek pievienota viena =.
  6. Rezultāts: SGVsbG8=

Dekodēšana šīs darbības veic pretējā secībā: katra rakstzīme tiek pārveidota atpakaļ par savu 6 bitu skaitli, biti tiek savienoti virknē, un šī virkne tiek nolasīta pa 8 bitu baitiem.

Base64 kodētā garuma formula

Ievadei, kuras garums ir n baiti, kodētās virknes garums rakstzīmēs ir:

encoded_length = 4 × ⌈n / 3⌉

kur ⌈x⌉ nozīmē noapaļošanu uz augšu līdz tuvākajam veselajam skaitlim. Šī formula parāda, kāpēc Base64 izvade vienmēr ir aptuveni par trešdaļu lielāka nekā ievade: uz katriem 3 ievades baitiem ir 4 izvades rakstzīmes, kas nozīmē 33% pieaugumu.

Kur izmanto Base64

  • E-pasta pielikumi (MIME). E-pasts tika izveidots tekstam, tāpēc failu pielikumi pirms nosūtīšanas tiek pārveidoti Base64 formātā, padarot pievienoto failu aptuveni par 33% lielāku nekā oriģināls.
  • Datu URI. Mazus attēlus var iegult tieši HTML vai CSS kā tekstu, piemēram, data:image/png;base64,iVBORw0KGgo..., tādējādi izvairoties no atsevišķa faila pieprasījuma. Tas vislabāk darbojas maziem failiem, jo lieli faili palielina lapas apjomu un tos nevar kešot atsevišķi.
  • API un JSON. JSON nav iebūvēta mehānisma neapstrādātu bināro datu glabāšanai, tāpēc binārie faili, kas tiek nosūtīti, izmantojot JSON API, bieži vispirms tiek kodēti Base64 formātā.
  • HTTP pamata autentifikācija. Galvene Authorization kodē lietotājvārdu un paroli Base64 formātā, piemēram, Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Tā pati par sevi nav droša; akreditācijas datus var nolasīt ikviens, kas tos pārtver, tāpēc pamata autentifikācija jāizmanto tikai ar HTTPS.
  • JSON Web Tokens (JWT). Katra no trim JWT daļām tiek kodēta ar Base64URL — variantu, ko droši var ievietot URL.
  • Bināro datu glabāšana kā teksts. Datubāzes vai konfigurācijas faili, kas pieņem tikai tekstu, dažkārt glabā bināros datus kā Base64 virkni.

Base64 salīdzinājumā ar citiem kodējumiem

URL drošais Base64 aizstāj standarta rakstzīmes + un / ar - un _, jo + un / URL iekšienē ir īpaša nozīme. To izmanto JWT, URL vaicājuma parametros un failu nosaukumos. Šis rīks veido standarta Base64 izvadi; lai pārveidotu to URL drošajā formā, pietiek aizstāt šīs abas rakstzīmes.

Base32 izmanto 32 rakstzīmju alfabētu, tāpēc katra rakstzīme satur 5 bitus, nevis 6. Tas katrus 5 baitus pārvērš 8 rakstzīmēs, radot 60% lieko apjomu (8 ÷ 5 = 1,6), salīdzinot ar 33% Base64 gadījumā. Base32 izvēlas, ja izvade jāievada ar roku vai jālasa pa tālruni, jo tajā nav dažādu reģistru burtu un viegli sajaucamu rakstzīmju.

Heksadecimālais kodējums izmanto 16 rakstzīmes (0–9, A–F) un katram baitam vajag 2 rakstzīmes, tādējādi apjoms tiek dubultots (100% liekais apjoms). To bieži izmanto jaucējvērtību, krāsu un MAC adrešu attēlošanai, kad lasāmība ir svarīgāka par kompakto izmēru.

Kad Base64 neizmantot

Base64 palielina apjomu un procesora slodzi, tāpēc tas nav piemērots lieliem failiem, kas tiek sūtīti tīklā; neapstrādātu bināro datu nosūtīšana ir mazāka un ātrāka. Uz to nekad nedrīkst paļauties, lai slēptu sensitīvu informāciju, piemēram, paroles vai API atslēgas, jo dekodēšanai nav vajadzīgs noslēpums. Lielu failu glabāšanai parasti labāks risinājums ir datubāzes binārā tipa kolonnas vai failu glabāšanas pakalpojuma izmantošana, nevis gara Base64 virkne teksta laukā.

Biežākās kļūdas

  • UTF-8 pārveidošanas izlaišana. Teksta ar diakritiskajām zīmēm vai emocijzīmēm kodēšana, vispirms nepārvēršot to UTF-8 baitos, var sabojāt izvadi.
  • Papildinājuma noņemšana. Dažas sistēmas noņem beigu = rakstzīmes. Lielākā daļa dekodētāju joprojām darbojas, ja virknes garums tiek papildināts līdz 4 daudzkārtnim, taču ne visi to pieņem, tāpēc drošāk ir papildinājumu saglabāt.
  • Atlikušie rindu pārtraukumi. Vecāki uz MIME balstīti kodētāji ievieto rindu pārtraukumu ik pēc 76 rakstzīmēm; lielākā daļa mūsdienu dekodētāju sagaida vienu nepārtrauktu virkni bez rindu pārtraukumiem.
  • Variantu sajaukšana. Standarta Base64 un URL drošais Base64 vienām un tām pašām divām alfabēta pozīcijām izmanto atšķirīgas rakstzīmes; dekodēšana ar nepareizo variantu rada nederīgus datus vai kļūdu.

Biežāk uzdotie jautājumi

Vai Base64 ir šifrēšanas veids? Nē. Tā ir atgriezeniska teksta kodēšana, nevis šifrēšana. Ikviens var nekavējoties dekodēt Base64 virkni bez paroles. Ja datiem jāpaliek slepeniem, izmantojiet šifrēšanas algoritmu, piemēram, AES.

Kāpēc Base64 padara datus lielākus? Tāpēc, ka tas izmanto vienu pilnu rakstzīmi, lai ietvertu tikai 6 bitus, kamēr neapstrādāts baits satur 8 bitus. Pārvēršot 3 baitus (24 bitus) par 4 rakstzīmēm, izvade kļūst 4/3 jeb aptuveni par 33% lielāka nekā ievade.

Vai Base64 var kodēt attēlus un citus bināros failus? Jā. Jebkuru bināro failu, tostarp attēlus, PDF failus un audio, var kodēt Base64 formātā un pēc tam dekodēt atpakaļ pa baitiem bez zudumiem. To bieži izmanto maziem attēliem, kas iegulti HTML vai CSS, taču lieliem failiem tā ir slikta izvēle.

Kāda ir atšķirība starp Base64 un Base64URL? Base64URL standarta rakstzīmes + un / aizstāj ar - un _, tāpēc rezultātu var ievietot URL vai faila nosaukumā bez papildu aizvietošanas. Šī iemesla dēļ JWT izmanto Base64URL.

Kāpēc, dekodējot manu Base64 virkni, tiek parādīta kļūda “invalid”? Visbiežākie cēloņi ir rakstzīmes, kas nepieder Base64 alfabētam, piemēram, URL drošajā variantā izmantotās - un _, vai arī virkne, kuras garums ir par vienu lielāks nekā 4 daudzkārtnis. Nevienai derīgai Base64 virknei nav šāda garuma. Dekodēšana neizdodas arī tad, ja dekodētie baiti nav derīgs UTF-8 teksts. Šis rīks ignorē atstarpes un rindu pārtraukumus virknē, kā arī dekodē virkni, kurai beigu = papildinājums ir noņemts.

No kurienes nāk Base64? Šī metode radās agrīnās shēmās bināro datu nosūtīšanai tikai teksta pasta sistēmās 1980. gados, un tā tika oficiāli standartizēta kā MIME daļa RFC 2045 1996. gadā. Pašreizējā Base64, Base32 un Base16 atsauces specifikācija ir RFC 4648.