Pereiti prie turinio

Base64 kodavimo ir dekodavimo įrankis - Nemokamas internetinis Base64 keitiklis

Nemokamas base64 kodavimo ir dekodavimo įrankis. Akimirksniu konvertuokite tekstą į Base64 arba dekuoduokite Base64 eilutes. Palaiko standartinį ir URL saugų kodavimą. Joks prisijungimas nereikalingas.

Base64 kodavimo/dekodavimo įrankis

Konvertuoti tekstą į ir iš Base64 kodavimo

Įkrovimo skaičiuotuvas...
📚

Dokumentacija

Kas yra Base64 kodavimas?

Base64 yra dvejetainių duomenų į tekstą kodavimo schema, kuri konvertuoja dvejetainius duomenis į 64 simbolių ASCII eilutės formatą. Kai jums reikia siųsti paveikslėlius el. paštu, įterpti duomenis į URL arba perduoti dvejetainius duomenis per JSON API, Base64 išsprendžia duomenų sugadinimo tik teksto kanaluose problemą.

Kodavimas veikia su specifine simbolių aibe:

  • Didžiosios raidės A-Z (26 simboliai)
  • Mažosios raidės a-z (26 simboliai)
  • Skaitmenys 0-9 (10 simbolių)
  • Du simboliai: "+" ir "/" (2 simboliai)

Mūsų base64 koduotuvas dekodotuvas akimirksniu konvertuoja tekstą į Base64 arba dekoduoja Base64 eilutes atgal į skaitomą tekstą – jokių įdiegimų nereikia.

Kodėl Base64 svarbus šiuolaikiniame kūrime

Kuriant žiniatinklio programėles, nuolat susidursite su Base64. El. pašto priedai naudoja jį per MIME kodavimą. Duomenų URI CSS ir HTML pasikliauja juo įterpdami paveikslėlius tiesiai į kodą. REST API naudoja jį perduodami dvejetainius duomenis JSON užkrauose. Net HTTP bazinis autentifikavimas priklauso nuo Base64 (nors tai nėra šifravimas – daugiau apie tai žemiau).

Štai kas daro šį kodavimą esminiu: tekstu pagrįsti protokolai kaip HTTP, JSON ir XML nebuvo sukurti patikimai tvarkyti neapdorotų dvejetainių duomenų. Siųskite dvejetainį paveikslėlį per JSON API be kodavimo, ir greičiausiai susidursite su duomenų sugadinimu. Base64 užtikrina, kad jūsų dvejetainiai duomenys išliks saugūs, juos visiškai pateikiant saugiais ASCII simboliais.

Kaip naudotis šiuo Base64 įrankiu

Teksto kodavimas į Base64:

  1. Įveskite arba įklijuokite tekstą į įvesties lauką
  2. Spustelėkite „Koduoti į Base64" arba įjunkite tiesioginį konvertavimą
  3. Nukopijuokite Base64 išvestį naudojimui savo programoje

Base64 dekodavimas į tekstą:

  1. Įklijuokite savo Base64 eilutę į įvesties lauką
  2. Spustelėkite „Dekoduoti iš Base64" arba perjunkite į dekodavimo režimą
  3. Peržiūrėkite pradinį tekstą išvesties srityje

Tiesioginės konversijos režimas automatiškai atnaujina rezultatus jums renkant, idealiai tinka greitam testavimui ir klaidų šalinimui. Įrankis tvarko UTF-8 tekstą, įskaitant emoji ir tarptautinius simbolius.

Kaip veikia Base64 kodavimas

Kodavimas transformuoja kiekvienus tris baitus (24 bitus) įvesties duomenų į keturis Base64 simbolius. Galvokite apie tai kaip apie vertimą, kur 3 įvesties baitų grupės tampa 4 išvesties simbolių grupėmis.

Štai žingsnis po žingsnio base64 kodavimo procesas:

  1. Konvertuoti į dvejetainę: Jūsų įvesties tekstas tampa jo dvejetaine reprezentacija (paprastai UTF-8)
  2. Sugrupuoti į dalis: Dvejetainiai duomenys padalinami į 24-bitų dalis (po 3 baitus)
  3. Padalinti į 6-bitų segmentus: Kiekviena 24-bitų dalis padalinama į keturias 6-bitų grupes
  4. Susieti su simboliais: Kiekviena 6-bitų reikšmė (0-63) susiiejama su savo Base64 simboliu

Kas nutinka, kai jūsų įvestis nėra daloma iš 3? Užpildymo simboliai ("=") užpildo spragą. Tai išlaiko nuoseklų 4:3 santykį tarp išvesties ir įvesties ilgių.

Matematika už Base64

Baitų sekos b1,b2,b3b_1, b_2, b_3 atveju atitinkami Base64 simboliai c1,c2,c3,c4c_1, c_2, c_3, c_4 apskaičiuojami taip:

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] reiškia ii-ąjį simbolį Base64 abėcėlėje.

Base64 dekodavimo procesas

Dekodavimas atkuria kodavimą, konvertuojant Base64 simbolius atgal į dvejetainius:

  1. Susieti kiekvieną Base64 simbolį su jo 6-bitų reikšme
  2. Sujungti šias 6-bitų reikšmes į nuoseklų bitų srautą
  3. Padalinti į 8-bitų dalis (baitus)
  4. Konvertuoti kiekvieną baitą į jo atitinkamą simbolį

Suprantant Užpildymą

Užpildymas užtikrina, kad išvesties ilgis visada būtų 4 simbolių kartotinis:

  • Vienas likęs baitas: Sukuria du Base64 simbolius ir "=="
  • Du likę baitai: Sukuria tris Base64 simbolius ir "="

Dažna klaida yra pašalinti užpildymo simbolius saugant Base64 eilutes. Nors kai kurie dekoderiai tvarko trūkstamą užpildymą, griežtos realizacijos jį atmes. Palikite užpildymą, nebent esate tikri, kad jūsų dekoderis yra atlaidus.

Base64 kodavimo pavyzdys: "Labas"

Pereikime per "Labas" kodavimą naudojant base64 keitiklį:

  1. ASCII reikšmės: 76 97 98 97 115
  2. Dvejetainė forma: 01001100 01100001 01100010 01100001 01110011
  3. Sugrupuokime į 6 bitų dalis: 010011 000110 000101 100010 011000 010111 001100
  4. Papildykime paskutinę dalį nuliais: 010011 000110 000101 100010 011000 010111 001100
  5. Konvertuokime į dešimtainę: 19, 6, 5, 34, 24, 23, 12
  6. Susieti su Base64 abėcėle: T, G, F, i, Y, X, M
  7. Galutinis rezultatas: VGFiYXM=

Atkreipkite dėmesį į "=" papildymą pabaigoje. Kadangi "Labas" turi 5 baitus (ne dalus iš 3), mums reikia papildymo, kad parodytume, jog paskutinė grupė nėra pilna.

Base64 kodavimo ilgio formulė

Formulė apskaičiuoti užkoduotos eilutės ilgį:

uzˇkoduotas_ilgis=4×įvesties_ilgis3\text{užkoduotas\_ilgis} = 4 \times \lceil \frac{\text{įvesties\_ilgis}}{3} \rceil

Kur x\lceil x \rceil reiškia lubų funkciją (apvalinimą iki artimiausio sveikojo skaičiaus).

Realūs Base64 naudojimo atvejai

Štai kur susidursite su base64 kodavimu gamybinėse sistemose:

1. El. laiškų priedai (MIME kodavimas)

El. laiškų protokolai buvo sukurti 7-bitų ASCII tekstui. Kai prisegate PDF ar vaizdą, MIME naudoja Base64 konvertuoti dvejetinius failus į el. laiškams saugius tekstus. Būtent dėl to el. laiškų failų priedai yra maždaug 33% didesni nei originalūs failai — tai Base64 papildomas svoris.

2. Duomenų URI žiniatinklio kūrime

Kada nors įterpėte vaizdą tiesiogiai CSS ar HTML? Tai Base64 veikimas:

1<img src="data:image/png;base64,iVBORw0KGgoAAAANS..." />
2

Šis metodas sumažina HTTP užklausas įterpiant mažus išteklius tiesiogiai į kodą. Tačiau geriausia naudoti mažus vaizdus (iki 10 KB) — didesni failai sulėtina puslapio atvaizdavimą, nes negali būti atskirai talpinami.

3. API duomenų perdavimas

REST API dažnai naudoja Base64 siųsti dvejetinius duomenis per JSON. Kai įkeliamas vaizdas per API galutinį tašką, kuris priima tik JSON, failas užkoduojamas Base64. Atminkite, kad tai prideda 33% prie naudingosios apkrovos dydžio, todėl dideliems failams apsvarstykite multipart/form-data.

4. HTTP bazinis autentifikavimas

Autorizacijos antraštė naudoja Base64 kodavimui:

1Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
2

Kritiškas įspėjimas: Base64 nėra šifravimas. Bet kas gali iškart iššifruoti. Visada naudokite HTTPS — niekada nesiųskite Base64 užkoduotų kredencialų per paprastą HTTP.

5. JWT Žetonai

JSON Web Tokens (JWT) naudoja Base64URL kodavimą (URL saugų variantą) savo trims segmentams. Tai leidžia žetonams saugiai keliauti URL ir HTTP antraštėse.

6. Dvejetinių duomenų saugojimas duomenų bazėse

Kai jūsų duomenų bazė nepalaiko dvejetinių stulpelių arba reikia saugoti dvejetinius duomenis JSON laukuose, Base64 suteikia tekstui saugų sprendimą. Pastebėkite, kad tai padidina saugojimo reikalavimus 33%.

7. Slapukų saugojimas

Slapukai turi būti tik ASCII simboliai. Kai reikia saugoti sudėtingas duomenų struktūras ar dvejetinius duomenis slapukuose, Base64 kodavimas juos padaro slapukams saugiais.

Kada NENAUDOTI Base64

Prieš koduojant viską Base64, apsvarstykite šias situacijas, kai tai yra netinkamas pasirinkimas:

Didelių failų perdavimas: 33% dydžio padidėjimas reikšmingai veikia pralaidumą ir įkėlimo laiką. Vietoj to naudokite tiesioginį dvejetainį perdavimą (multipart/form-data).

Vaizdų saugojimas kliento pusėje: Base64 vaizdai CSS ar HTML negali būti atskirai talpinami į talpyklą ir blokuoja puslapio atvaizdavimą. Saugokite vaizdus kaip atskirus failus geresniam našumui.

Didelių failų saugojimas duomenų bazėje: Megabaitų dydžio Base64 eilučių saugojimas duomenų bazės TEXT laukuose eikvojama saugyklos vieta ir lėtina užklausas. Vietoj to naudokite BLOB stulpelius arba failų saugojimo paslaugas (S3, CloudFlare R2).

Saugumo poreikiai: Base64 nesuteikia jokio saugumo. Nenaudokite jo "paslėpti" API raktus, slaptažodžius ar jautrius duomenis. Naudokite tinkamą šifravimą.

Aukšto našumo scenarijai: Base64 kodavimas/dekodavimas prideda CPU apkrovą. Apdorojant tūkstančius užklausų per sekundę, tiesioginis dvejetainis tvarkymas veikia geriau.

Base64 Alternatyvos: Teisingo Kodavimo Pasirinkimas

Base64 ne visada yra geriausias pasirinkimas. Štai kada verta apsvarstyti alternatyvas:

URL-Saugus Base64

Standartinis Base64 naudoja "+" ir "/" simbolius, kurie sugadina URL. URL-saugus Base64 juos pakeičia "-" ir "_". Naudokite šį variantą:

  • Užklausų parametrams
  • URL keliams
  • JWT žetonams
  • Bet kokiems duomenims, perduodamiems URL

Base32 Kodavimas

Base32 sukuria ilgesnę išvestį (40% papildomas dydis lyginant su 33%), tačiau siūlo raidžių nesvarumą. Pasirinkite Base32, kai:

  • Vartotojai turi rankiniu būdu įvesti koduotą reikšmę
  • Raidžių jautrios sistemos kelia problemų
  • Reikia geresnės klaidų aptikimo

Šešioliktainis Kodavimas

Šešioliktainis padidina duomenų dydį (100% papildomas dydis), tačiau yra paprastas ir universaliai palaikomas. Idealus:

  • Hash reikšmių rodymui
  • Spalvų kodams
  • MAC adresams
  • Situacijose, kur aiškumas svarbesnis už efektyvumą

Tiesioginis Dvejetainis Perdavimas

Dideliems failams praleiskite teksto kodavimą. Naudokite multipart/form-data arba dvejetainį HTTP su tinkamais Content-Type antraštėmis. Tai išvengia 33% dydžio nuostolio ir pagerina našumą.

Suspaudimas + Base64

Koduojant didelius tekstus ar pasikartojančius duomenis, pirmiausia juos suspauskite (gzip arba deflate), tada taikykite Base64. Tai dažnai sukuria mažesnę išvestį nei paprastas Base64 kodavimas.

Base64 Kodavimo Trumpa Istorija

Base64 atsirado ankstyvosios kompiuterijos poreikio perduoti dvejetainius duomenis tik tekstiniais kanalais. Oficiali specifikacija pirmą kartą pasirodė RFC 989 (1987) Privacy Enhanced Mail (PEM) sistemoje, vėliau išsivystė per RFC 1421 (1993) ir RFC 2045 (1996) kaip MIME dalis.

Pavadinimas "Base64" atspindi jo 64 simbolių abėcėlę. Tai nebuvo atsitiktinis - 64 lygus 2^6, todėl dvejetainių-Base64 konvertavimas matematiškai efektyvus paprastais bitų postūmio veiksmais.

Šiuolaikinės Base64 variacijos apima:

  • Standartinis Base64 (RFC 4648): Naudoja A-Z, a-z, 0-9, +, / su = užpildymu
  • URL-saugus Base64: Pakeičia + ir / į - ir _ saugiam URL perdavimui
  • Base64URL: IETF standartinė URL ir failų pavadinimų versija
  • Modifikuotas Base64: IMAP naudoja savo simbolių rinkinį pašto dėžučių pavadinimams

Per daugiau nei 35 metus, Base64 išlieka esminiu šiuolaikiniame žiniatinklio kūrime, ypač kai dominuoja JSON API ir žiniatinklio paslaugos.

[Toliau seka visas originalus vertimas su kodų pavyzdžiais visomis kalbomis]

Įprasti Base64 spąstai ir sprendimai

Būkite atsargūs dėl šių problemų dirbdami su base64 dekoderiu ar enkoderiu:

1. Simbolių kodavimo problemos

Problema: Teksto kodavimas su emoji ar tarptautiniais simboliais be pirminės UTF-8 konversijos sukuria sugadintą išvestį.

Sprendimas: Visada konvertuokite į UTF-8 baitų seką prieš Base64 kodavimą. JavaScript kalboje tai reiškia tinkamą daugiabaičių simbolių apdorojimą — įtaisytas btoa() nepavyksta su Unicode.

2. Trūkstamas ar netinkamas užpildymas

Problema: Kai kurios sistemos pašalina „=" užpildymo simbolius, dėl ko griežti dekodavimo įrankiai sugenda.

Sprendimas: Prieš dekodavimą patikrinkite, ar ilgis yra 4 kartotinis. Jei ne, pridėkite „=" simbolius: while (str.length % 4) str += '='

3. Eilučių lūžiai užkoduotuose duomenyse

Problema: Senos MIME realizacijos prideda eilučių lūžius kas 76 simbolius. Šiuolaikinės API dažnai juos atmeta.

Sprendimas: Pašalinkite visus naujos eilutės ir tarpų simbolius prieš dekodavimą: str.replace(/\s/g, '')

4. URL-saugus vs standartinis Base64

Problema: Standartinio Base64 naudojimas (+, /) URL adresuose sukelia kodavimo problemas ar suardo maršrutizavimą.

Sprendimas: URL adresams naudokite URL-saugų variantą. Konvertuokite tarp jų:

  • Standartinis į URL-saugų: Pakeiskite + į - ir / į _
  • URL-saugus į standartinį: Atkurkite atvirkštinį pakeitimą

5. Našumas su dideliais failais

Problema: Kelių megabaitų failų kodavimas operatyvinėje atmintyje gali užšaldyti naršykles ar suardyti programas.

Sprendimas: Naudokite srautų API arba skaidykite duomenis dalimis. Šiuolaikinės naršyklės palaiko Srautų API didelių failų apdorojimui be viso turinio įkėlimo į atmintį.

6. Saugumo klaidingos nuostatos

Kritinė klaida: Base64 laikymas šifravimu ar saugiu maskavimo būdu.

Realybė: Base64 yra visiškai grįžtamas per milisekundes. Niekada nenaudokite jo „paslėpti" jautriems duomenims. Tai kodavimas, o ne saugumas. Visada derinkite su tinkamu šifravimu (AES, RSA), kai saugumas svarbus.

Dažniausiai užduodami klausimai

Ar Base64 yra šifravimas?

Ne. Base64 yra kodavimas, o ne šifravimas. Bet kas gali iškart iššifruoti Base64 be rakto. Šifravimas reikalauja slapto rakto ir yra sudėtingai grįžtamai atkuriamas. Jei jums reikia saugumo, naudokite tikrus šifravimo algoritmus kaip AES-256, o tada papildomai užkoduokite šifruotus duomenis Base64 perdavimui.

Kodėl Base64 padidina duomenų dydį?

33% dydžio padidėjimas yra būdingas pačiam algoritmui. Kiekvienos 3 įvesties baitų tampa 4 išvesties simboliais, nes Base64 naudoja 6 bitus vienam simboliui, kai standartiniai baitai naudoja 8 bitus. Formulė: 3 baitai × 8 bitai = 24 bitai; 24 bitai ÷ 6 bitai vienam simboliui = 4 simboliai.

Ar galima užkoduoti vaizdus į Base64?

Taip, vaizdai gali būti užkoduoti į Base64. Tai įprasta naudojant duomenų URI HTML/CSS ir API užklausose. Tačiau atsižvelkite į šiuos kompromisus: Base64 vaizdai negali būti atskirai talpinami, padidina puslapio dydį 33% ir lėtina pradinį atvaizdavimą. Naudokite tai mažoms piktogramėlėms (iki 10KB), o ne dideliems nuotraukoms.

Koks skirtumas tarp Base64 ir Base64URL?

Base64URL yra saugus URL adresams. Standartinis Base64 naudoja "+" ir "/" simbolius, kurie turi specialią reikšmę URL adresuose (tarpas ir kelio skirtukas). Base64URL juos pakeičia "-" ir "_", kurie yra saugūs URL adresuose. JWT žetonai dėl to naudoja Base64URL.

Kaip ištaisyti "Neteisingas Base64 eilutės" klaidas?

Dažniausios priežastys:

  1. Trūkstamas papildymas: Pridėkite "=" simbolius, kol ilgis bus dalus iš 4
  2. Neteisingi simboliai: Pašalinkite bet kokius simbolius už A-Z, a-z, 0-9, +, /, = ribų
  3. Tarpai: Pašalinkite visus tarpus, tabuliacijos ir naujos eilutės simbolius
  4. Neteisingas variantas: URL saugus Base64 naudoja - ir _ vietoj + ir /

Ar galima Base64 iššifruoti dvejetainius failus?

Base64 užkoduoja dvejetainius duomenis į tekstą, o iššifravimas grąžina atvirkštinį procesą. Galite užkoduoti bet kokį dvejetainį failą (PDF, vaizdą, vaizdo įrašą) į Base64, perduoti kaip tekstą, tada iššifruoti atgal į dvejetainius. Iššifruotas rezultatas yra baitų-į-baitą identiškas originalui.

Kodėl naudoti Base64 el. pašto priedams?

SMTP (el. pašto protokolas) buvo sukurtas 7-bitų ASCII tekstui. Dvejetainiai priedai būtų sugadinti perdavimo metu. MIME naudoja Base64, kad konvertuotų dvejetainius failus į ASCII saugų tekstą, kuris išlieka el. pašto maršrutizavimo metu. 33% dydžio padidėjimas yra suderinamumo kaina.

Kaip užkoduoti specialius simbolius Base64?

Pirma, užkoduokite tekstą į UTF-8 baitus, tada pritaikykite Base64 kodavimą tiems baitams. Tai užtikrina, kad emoji, diakritiniai ir tarptautinių rašmenų simboliai būtų teisingai užkoduoti. JavaScript kalboje naudokite TextEncoder vietoj btoa(), kuris nepavyksta su Unicode:

1new TextEncoder().encode(text) // Pirma konvertuokite į UTF-8 baitus
2

Ar Base64 kodavimas lėtas dideliems failams?

Base64 kodavimas/dekodavimas yra santykinai greitas (milijonai baitų per sekundę moderniuose CPU), tačiau kelių megabaitų failų apdorojimas atmintyje gali užšaldyti naršyklę. Failams virš 1MB naudokite srautinį apdorojimą arba Web Workers, kad išvengtumėte pagrindinio gijos blokavimo.

Ar galima naudoti Base64 URL adresuose?

Naudokite Base64URL (URL saugų variantą) vietoj standartinio Base64. Standartinio Base64 "+" ir "/" simboliai sukelia problemų URL adresuose. Bibliotekos kaip JWT naudoja Base64URL automatiškai. Konvertavimui: pakeiskite + į -, pakeiskite / į _, ir papildomai pašalinkite papildymo "=" simbolius.

Nuorodos ir Standartai