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
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:
- Įveskite arba įklijuokite tekstą į įvesties lauką
- Spustelėkite „Koduoti į Base64" arba įjunkite tiesioginį konvertavimą
- Nukopijuokite Base64 išvestį naudojimui savo programoje
Base64 dekodavimas į tekstą:
- Įklijuokite savo Base64 eilutę į įvesties lauką
- Spustelėkite „Dekoduoti iš Base64" arba perjunkite į dekodavimo režimą
- 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:
- Konvertuoti į dvejetainę: Jūsų įvesties tekstas tampa jo dvejetaine reprezentacija (paprastai UTF-8)
- Sugrupuoti į dalis: Dvejetainiai duomenys padalinami į 24-bitų dalis (po 3 baitus)
- Padalinti į 6-bitų segmentus: Kiekviena 24-bitų dalis padalinama į keturias 6-bitų grupes
- 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 atveju atitinkami Base64 simboliai apskaičiuojami taip:
Kur reiškia -ąjį simbolį Base64 abėcėlėje.
Base64 dekodavimo procesas
Dekodavimas atkuria kodavimą, konvertuojant Base64 simbolius atgal į dvejetainius:
- Susieti kiekvieną Base64 simbolį su jo 6-bitų reikšme
- Sujungti šias 6-bitų reikšmes į nuoseklų bitų srautą
- Padalinti į 8-bitų dalis (baitus)
- 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į:
- ASCII reikšmės: 76 97 98 97 115
- Dvejetainė forma: 01001100 01100001 01100010 01100001 01110011
- Sugrupuokime į 6 bitų dalis: 010011 000110 000101 100010 011000 010111 001100
- Papildykime paskutinę dalį nuliais: 010011 000110 000101 100010 011000 010111 001100
- Konvertuokime į dešimtainę: 19, 6, 5, 34, 24, 23, 12
- Susieti su Base64 abėcėle: T, G, F, i, Y, X, M
- 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į:
Kur 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=
2Kritiš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:
- Trūkstamas papildymas: Pridėkite "=" simbolius, kol ilgis bus dalus iš 4
- Neteisingi simboliai: Pašalinkite bet kokius simbolius už A-Z, a-z, 0-9, +, /, = ribų
- Tarpai: Pašalinkite visus tarpus, tabuliacijos ir naujos eilutės simbolius
- 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
2Ar 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
- RFC 4648 - Base16, Base32 ir Base64 Duomenų Kodavimai - Oficiali IETF specifikacija
- RFC 2045 - MIME Dalis Pirma: Interneto Pranešimų Kūnų Formatas - MIME ir el. pašto kodavimo standartas
- MDN Web Dokumentai: btoa() ir atob() - Naršyklės API dokumentacija
- RFC 7515 - JSON Web Signatūra (JWS) - Base64URL naudojimas JWT žetonyse
- W3C Duomenų URL - Duomenų URI specifikacija