Ugrás a tartalomra

Base64 kódoló és dekódoló

Írjon be szöveget vagy válasszon fájlt, és azonnal látja Base64 alakban. Visszafelé is működik: a Base64-ből visszakapja a szöveget, a képet vagy más fájlt.

A szöveg és a fájlok sehová sem kerülnek elküldésre, minden az Ön böngészőjében történik.

Az eszköz használata

Hogyan kódolhat és dekódolhat Base64-et

  1. 1 Felül válassza ki, hogy szöveggel vagy fájllal dolgozik. A szöveget kódolhatja és dekódolhatja is. A fájlt, például egy képet vagy PDF-et, Base64-be vagy egyenesen data URI-ba kódolhatja.
  2. 2 Szövegnél válassza a Kódolás vagy a Dekódolás lehetőséget, és illessze be a szöveget. Az eredmény már gépelés közben megjelenik.
  3. 3 Az eredményt a Másolás gombbal másolhatja ki. A Csere gombbal áthelyezheti a bemenetbe, és megfordíthatja az irányt, például ellenőrzéshez.

Amit az eszköz magától elvégez

  • dekódoláskor felismeri a szokásos Base64-et és a base64url-t is, és pótolja a végéről hiányzó = jeleket
  • beolvassa a teljes data URI-t a fájltípussal együtt, a szóközöket és a sortöréseket pedig figyelmen kívül hagyja
  • felismeri a képet, a PDF-et vagy az archívumot, képnél előnézetet mutat, és letöltést kínál
  • a nem UTF-8 kódolású szöveget megpróbálja a régebbi Windows-1250 kódolással olvasni, és figyelmeztet rá
  • szöveg kódolásakor az eredmény alatt a webcímekhez és JWT-hez való base64url változatot is megmutatja
  • mindent közvetlenül az Ön böngészőjében dolgoz fel, semmi sem kerül elküldésre a szerverre

Hogyan alakíthat át képet Base64-be és vissza

A Base64-et leggyakrabban képeknél használják. Egy kis képet kódolhat, és közvetlenül a HTML-be vagy a CSS-be illesztheti, külön fájl nélkül. Ha pedig egy képet Base64 karakterláncként kap, például egy API-tól, itt visszaalakíthatja fájllá, és elmentheti.

Képből Base64

  1. 1 Az eszköz tetején váltson a Fájl módra, és válasszon egy PNG, JPG, GIF, WebP vagy SVG képet.
  2. 2 Válassza a Data URI formátumot, ha HTML-be vagy CSS-be szánja, illetve a Base64 formátumot API-hoz és JSON-höz.
  3. 3 Másolja ki az eredményt, és illessze be az src attribútumba, a background CSS-tulajdonságba vagy a saját kódjába.

Base64-ből kép vagy PDF

  1. 1 Váltson a Szöveg módra, és válassza a Dekódolás lehetőséget.
  2. 2 Illessze be a Base64 karakterláncot vagy a teljes data URI-t. Az eszköz a tartalom alapján felismeri, hogy PNG, JPEG, GIF, WebP vagy PDF fájlról van-e szó.
  3. 3 Képnél előnézet jelenik meg. A Fájl letöltése gombbal a megfelelő kiterjesztéssel mentheti el.

Hogyan olvasható el egy JWT token

A JWT token egyetlen hosszú karakterláncnak tűnik, valójában azonban három, ponttal elválasztott részből áll. Az első kettő egyszerű, base64url-be kódolt JSON, így kulcs nélkül is elolvashatja őket. Minden részt külön illesszen be az eszközbe:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSmFuYSIsImV4cCI6MTc2NzIyNTYwMH0.alairas

Fejléc
{"alg":"HS256","typ":"JWT"}

az aláírás algoritmusa és a token típusa

Adatok
{"sub":"123","name":"Jana","exp":1767225600}

a felhasználó azonosítója, neve és a lejárat ideje

Aláírás
alairas

bináris aláírás, amelyet a szerver ellenőriz, nem szöveg

Az exp érték a lejárat ideje 1970. január 1. óta eltelt másodpercekben, itt pontosan 2026. január 1., éjfél UTC. A token adatait bárki elolvashatja, akinél a token van, ezért soha ne tegyen bele jelszót vagy más titkos információt.

Hogyan nyerhető ki a melléklet az e-mail forráskódjából

Az üzenet forráskódjában minden melléklet hosszú Base64 blokként szerepel a Content-Transfer-Encoding: base64 fejléc után. A forráskódot a Gmailben az Eredeti megjelenítése, az Outlookban az Üzenet forrásának megtekintése paranccsal nyithatja meg. Másolja ki a blokkot a fejlécek nélkül, illessze be ide, válassza a Dekódolás lehetőséget, és töltse le a fájlt. Akkor jön jól, ha a levelezőprogram nem tudja megnyitni a mellékletet, vagy letiltotta.

Véletlen kulcs Base64-ben

Az API-khoz, titkosításhoz vagy aláíráshoz használt titkos kulcsokat gyakran Base64-ben írt véletlen bájtokként adják meg. A Laravel például az alkalmazáskulcsot APP_KEY=base64: formában, 32 véletlen bájtként tárolja. Kulcsot itt is generálhat, kriptográfiailag biztonságos generátorral, közvetlenül a böngészőjében.

Base64
base64url

Terminálban ugyanezt az openssl rand -base64 32 parancs végzi el. A generált kulcsot sehová nem küldjük el, és nem is mentjük.

Minden a Base64-ről

Mi a Base64, és mire használják

A Base64 segítségével bármilyen adat, akár egy kép vagy PDF is leírható mindössze 64 hétköznapi karakterrel: kis- és nagybetűkkel, számjegyekkel, valamint a + és / jellel. Az így leírt adat mindenhová továbbítható, ahol csak szöveg engedélyezett, például e-mail-mellékletekben, API-k JSON-válaszaiban, HTML-ben vagy CSS-ben. Minden három bájtból négy karakter lesz, ezért az eredmény nagyjából egyharmaddal hosszabb az eredeti adatnál.

karakter a Base64 ábécében
64
három bájtból négy karakter lesz
3 → 4
ennyivel hosszabb az eredmény
+33%
a Base64-et meghatározó szabvány
RFC 4648

Példák

Így néznek ki a szokásos szövegek kódolás előtt és után:

BemenetBase64
Rövid szöveg Szia U3ppYQ==
Ékezetes szöveg Jó napot SsOzIG5hcG90
HTTP Basic bejelentkezés nev:jelszo bmV2OmplbHN6bw==

Hogyan működik a Base64 lépésről lépésre

  1. 1 Először a szöveg bájtokká alakul. Az ékezet nélküli betűk UTF-8-ban egy bájtot foglalnak, az á, az é vagy az ő kettőt, az emojik pedig négyet.
  2. 2 Minden bájt nyolc bitből áll. A bitek egymás után sorakoznak, majd hatos csoportokra oszlanak.
  3. 3 Minden hatbites csoport egy 0 és 63 közötti szám, amelynek a Base64 ábécében egy karakter felel meg: a 0 az A, a 26 az a, az 52 a 0, a 62 a +, a 63 pedig a /.
  4. 4 Ha az utolsó csoporthoz nem marad elég bit, nullákkal egészül ki. Az eredmény végére ezután = jelek kerülnek, hogy a hossza osztható legyen néggyel.

Hogyan lesz három bájtból négy Base64 karakter

A Man szöveg Base64 kódolása A Man szöveg három bájtja 24 bit. Ezeket négy 6 bites csoportra osztjuk, amelyekből a TWFu karakterek lesznek. A Ma szöveget nullák és egy = jel egészítik ki TWE= alakra. Karakterek (ASCII) Bitek 6 bites csoportok Base64 M 77 a 97 n 110 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0 19 T 22 W 5 F 46 u M 77 a 97 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 19 T 22 W 4 E = A-Z = 0-25 · a-z = 26-51 · 0-9 = 52-61 · + = 62 · / = 63

A Base64 hármas bájtcsoportokban dolgozza fel a bemenetet. Az M, a és n betűk ASCII-kódja 77, 97 és 110.

Minden bájt 8 bites, ez összesen 24 bit.

A 24 bitet 4 darab 6 bites csoportra osztja. Minden csoport egy 0 és 63 közötti szám.

Minden számot a 64 karakteres ábécé egy karaktere helyettesít. 3 bájtból 4 karakter lesz, ezért a Base64 nagyjából egyharmaddal hosszabb.

Ha az utolsó csoport nem teljes, például a „Ma” szövegnél, hiányzik a harmadik bájt.

Csak 16 bit van, ez nem elég három teljes 6 bites csoporthoz.

A harmadik csoportot két nulla bit egészíti ki 6 bitre. A negyedikre már nem maradt bit.

A hiányzó csoport helyére = jel kerül. Ebből tudja a dekóder, hány bájt volt valójában a végén.

A bemutató a szöveg első hat bájtját bontja fel.

Karakter Bájt Bitek
S8301010011
z12201111010
i10501101001
a9701100001
Hatbites csoport Érték Base64 karakter
01010020U
110111553
10100141p
10100141p
01100024Y
01000016Q
=
=

= U3ppYQ==

A Base64 ábécé (karaktertáblázat)

A Base64 pontosan 64 karaktert használ. Mindegyik egy 0 és 63 közötti számnak, vagyis egy hatbites csoportnak felel meg. Az = jel nem része az ábécének, csak a végén egészíti ki a hosszt.

  1. 0 A
  2. 1 B
  3. 2 C
  4. 3 D
  5. 4 E
  6. 5 F
  7. 6 G
  8. 7 H
  9. 8 I
  10. 9 J
  11. 10 K
  12. 11 L
  13. 12 M
  14. 13 N
  15. 14 O
  16. 15 P
  17. 16 Q
  18. 17 R
  19. 18 S
  20. 19 T
  21. 20 U
  22. 21 V
  23. 22 W
  24. 23 X
  25. 24 Y
  26. 25 Z
  27. 26 a
  28. 27 b
  29. 28 c
  30. 29 d
  31. 30 e
  32. 31 f
  33. 32 g
  34. 33 h
  35. 34 i
  36. 35 j
  37. 36 k
  38. 37 l
  39. 38 m
  40. 39 n
  41. 40 o
  42. 41 p
  43. 42 q
  44. 43 r
  45. 44 s
  46. 45 t
  47. 46 u
  48. 47 v
  49. 48 w
  50. 49 x
  51. 50 y
  52. 51 z
  53. 52 0
  54. 53 1
  55. 54 2
  56. 55 3
  57. 56 4
  58. 57 5
  59. 58 6
  60. 59 7
  61. 60 8
  62. 61 9
  63. 62 +
  64. 63 /

Miért van a végén = vagy ==

A Base64 hármasával dolgozza fel a bájtokat. Ha a végén ennél kevesebb marad, a hiányzó helyet = jel jelöli. Egy megmaradt bájtnál két = jel kerül a végére, két bájtnál egy, háromnál egy sem. Egyes rendszerek, például a JWT, elhagyják az = jeleket, mert a dekódoló magától ki tudja számolni a hosszt.

T
VA==
Te
VGU=
Tes
VGVz
Test
VGVzdA==

Mekkora lesz a Base64

Minden három bájtból négy karakter lesz, így a Base64 hossza 4 × ⌈n ÷ 3⌉ karakter, ahol n a bájtok száma, a zárójel pedig felfelé kerekítést jelent. Az eredmény tehát nagyjából 33%-kal hosszabb. E-mailekben a Base64-et ráadásul 76 karakteres sorokra tördelik, és minden sort két karakter, a CR LF zár le, ezért a melléklet mérete nagyjából 37%-kal nő. Visszafelé is számolhat: a d hosszúságú Base64 3 × d ÷ 4 bájtot tartalmaz, amiből le kell vonni a végén lévő = jelek számát.

Eredeti fájlBase64Base64 e-mailben (MIME)
1,00 KB1,34 KB1,37 KB
10,00 KB13,34 KB13,69 KB
100 KB133 KB137 KB
1,00 MB1,33 MB1,37 MB
10,00 MB13,33 MB13,68 MB

A Base64 változatai

Minden változat ugyanazt az első 62 karaktert használja. Az utolsó két karakterben, a végi kiegészítésben és abban különböznek, hogy az eredményt sorokra tördelik-e.

Változat62. és 63. karakterKiegészítés =SorokFelhasználás
Szabványos Base64 (RFC 4648) + / igen tördelés nélkül API, JSON, data URI
base64url (RFC 4648) - _ általában nem tördelés nélkül JWT, OAuth, webcímek, fájlnevek
MIME (RFC 2045) + / igen 76 karakterenként e-mail-mellékletek
PEM (RFC 7468) + / igen 64 karakterenként tanúsítványok és kriptográfiai kulcsok

Base64 és base64url

A szokásos Base64 tartalmazza a +, / és = jeleket, amelyeknek a webcímekben saját jelentésük van. A base64url változat helyettük a - és _ jelet használja, a végén lévő = jeleket pedig elhagyja. Ezt használják például a JWT tokenek, az OAuth és a webcímekben szereplő aláírások.

Kép data URI-ként

A data URI a fájlt közvetlenül a HTML-be vagy a CSS-be illeszti, például <img src="data:image/png;base64,…">. Kis ikonokhoz jól jön, mert a böngészőnek nem kell külön letöltenie őket. Nagyobb képeknél nem éri meg: egyharmaddal nagyobbak, és a böngésző nem tudja őket külön gyorsítótárazni. E-mailbe ne tegyen data URI-t, a Gmail nem jeleníti meg az ilyen képeket, a spamszűrők pedig gyakran gyanúsnak tartják őket.

Hol használják a Base64-et a gyakorlatban

Képek közvetlenül HTML-ben és CSS-ben

Egy kis ikont vagy logót data URI-ként illeszthet be az oldalba, külön fájl és újabb szerverkérés nélkül.

<img src="data:image/png;base64,iVBORw0KGgo…" alt="Logo">

.ikon {
  background: url("data:image/svg+xml;base64,PHN2Zy…");
}

E-mail-mellékletek

Az e-mail csak szöveget továbbít, ezért minden mellékletet Base64-be kódolnak. A melléklet fejléce megmondja a levelezőprogramnak, hogyan kell dekódolnia.

Content-Type: application/pdf; name="szamla.pdf"
Content-Transfer-Encoding: base64

JVBERi0xLjcKJeLjz9MK…

Bejelentkezés HTTP Basic hitelesítéssel

A böngésző kettősponttal összefűzi a felhasználónevet és a jelszót, majd Base64-ben küldi el. Ez nem titkosítás, az adatokat csak a HTTPS-kapcsolat védi.

Authorization: Basic bmV2OmplbHN6bw==

JWT tokenek

A token három, ponttal elválasztott részből áll: fejlécből, adatokból és aláírásból. Az első kettő base64url-be kódolt JSON, így bárki elolvashatja. Az aláírás garantálja, hogy senki nem módosította őket, de nem rejti el őket.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiSmFuYSJ9.alairas

Tanúsítványok és kulcsok

Az SSL-tanúsítványokat és a privát kulcsokat Base64-ként tárolják a BEGIN és END sorok között. Ezt a formátumot PEM-nek nevezik.

-----BEGIN CERTIFICATE-----
MIIDdzCCAl+gAwIBAgIE…
-----END CERTIFICATE-----

Fájlok API-kban és JSON-ben

A JSON nem tud bináris adatot tárolni, ezért az API-k a fájlokat Base64 karakterláncként küldik egy közönséges szöveges mezőben.

{
  "nev": "szerzodes.pdf",
  "tartalom": "JVBERi0xLjcKJeLjz9MK…"
}

Titkos adatok a Kubernetesben

A Kubernetes a Secret objektumok értékeit Base64-ként tárolja, hogy bináris adat is lehessen bennük. Ez azonban nem védelem: aki hozzáfér az objektumhoz, egyszerűen dekódolja az értéket. Valódi védelmet csak a tárolt adatok titkosítása és a hozzáférési jogosultságok nyújtanak.

apiVersion: v1
kind: Secret
data:
  password: dGFqbmVoZXNsbw==

Hogyan ismerhető fel a fájl a Base64 eleje alapján

A legtöbb formátum jellegzetes bájtokkal kezdődik, ezért a Base64 alakja is mindig ugyanúgy kezdődik. Az első karakterekből így gyakran már dekódolás előtt kiderül, milyen fájlról van szó. A csillaggal jelölt sorok csak a leggyakoribb kezdetet mutatják, nem kötelező szabályt.

A Base64 elejeFájltípusMIME-típus
iVBORw0KGg…PNGimage/png
/9j/…JPEGimage/jpeg
R0lGO…GIFimage/gif
UklGR…RIFF (WebP, WAV, AVI)image/webp, audio/wav
PHN2Z…SVG*image/svg+xml
JVBERi…PDFapplication/pdf
UEsDB…ZIP, DOCX, XLSXapplication/zip
H4sI…GZIPapplication/gzip
PD94bW…XML*application/xml
ey…JSON, JWT*application/json

A Base64 és más kódolások

Nem a Base64 az egyetlen módja annak, hogy bájtokat szövegként írjunk le. A többi kódolás vagy hosszabb, de könnyebben olvasható és átírható, vagy rövidebb, de kevésbé szokványos karaktereket használ.

KódolásKarakterekNövekedésJellemző felhasználás
Hex (Base16) 0-9, A-F 100% hashértékek, színkódok, bájtok kiírása
Base32 A-Z, 2-7 60% kulcsok a kétlépcsős azonosításhoz (TOTP)
Base58 58 karakter, a 0, O, I és l nélkül kb. 37% kriptovaluta-címek, rövid azonosítók
Base64 A-Z, a-z, 0-9, + / 33% mellékletek, data URI, API, JWT
Base85 (Ascii85) 85 karakter 25% PDF, PostScript, bináris változások a Gitben

A Base64 nem titkosítás

A Base64-et bárki dekódolhatja, kulcs nélkül is. Nem védi a jelszavakat, a személyes adatokat és a titkos kulcsokat, csak más formába írja át őket. A csalók viszont szívesen visszaélnek vele: adathalász e-mailekben és kártékony szkriptekben ezzel rejtik el a linkeket és a kódot az egyszerű szűrők elől. Ha valahol szokatlanul hosszú Base64 karakterláncba botlik, nyugodtan dekódolja itt, és nézze meg, mit tartalmaz. A dekódolás során semmi sem fut le.

A Base64 rövid története

  1. 1987

    A kódolás először a PEM nevű biztonságos levelezési szabvány specifikációjában (RFC 989) jelent meg, printable encoding néven.

  2. 1992

    A MIME szabvány (RFC 1341) az e-mail-mellékletekhez használta, bevezette a 76 karakteres sorokat, és a Base64 nevet adta neki.

  3. 2003

    Az RFC 3548 az e-mailtől függetlenül, önállóan írta le a Base64-et, és kiegészítette egy webcímekhez és fájlnevekhez való változattal.

  4. 2006

    Az RFC 4648 felváltotta az előző dokumentumot, és ma is ez van érvényben.

Fejlesztőknek

Base64 a programozásban és a parancssorban

Így kódolhatja és dekódolhatja a „Szia” szöveget a gyakori programozási nyelvekben. Az ékezetes szöveget mindig alakítsa előbb UTF-8 bájtokká, különben hibát vagy eltérő eredményt kap.

JavaScript

const base64 = btoa(String.fromCharCode(...new TextEncoder().encode('Szia')));
const text = new TextDecoder().decode(Uint8Array.from(atob(base64), (c) => c.charCodeAt(0)));

Önmagában a btoa('tűz') InvalidCharacterError hibával leáll, mert a btoa függvény csak Latin-1 karaktereket fogad el. A legújabb böngészők már a Uint8Array.prototype.toBase64() metódust is ismerik.

Node.js

Buffer.from('Szia', 'utf8').toString('base64');
Buffer.from('U3ppYQ==', 'base64').toString('utf8');
Buffer.from('Szia').toString('base64url');

A Node.js a base64url kódolást is ismeri, ehhez nincs szükség külön könyvtárra.

PHP

base64_encode('Szia');
base64_decode('U3ppYQ==', true);

A második, true paraméter hatására érvénytelen bemenetnél false az eredmény. Enélkül a PHP a nem megengedett karaktereket csendben átugorja.

Python

import base64

base64.b64encode('Szia'.encode()).decode()
base64.b64decode('U3ppYQ==').decode()
base64.urlsafe_b64encode(b'Szia')

Az Incorrect padding hiba azt jelenti, hogy a karakterlánc végéről hiányoznak az = jelek.

Java

Base64.getEncoder().encodeToString("Szia".getBytes(StandardCharsets.UTF_8));
new String(Base64.getDecoder().decode("U3ppYQ=="), StandardCharsets.UTF_8);

A base64url változathoz a Base64.getUrlEncoder(), e-mailekhez a Base64.getMimeEncoder() metódust használja.

C#

Convert.ToBase64String(Encoding.UTF8.GetBytes("Szia"));
Encoding.UTF8.GetString(Convert.FromBase64String("U3ppYQ=="));

Ugyanezek a metódusok a .NET-ben és a PowerShellben is működnek.

Linux és macOS

printf 'Szia' | base64
echo 'U3ppYQ==' | base64 -d
base64 < fajl.pdf > fajl.txt

Az echo parancs új sort fűz a szöveg végére, ezért kódoláshoz a printf vagy az echo -n parancsot használja. A macOS régebbi verziói a -d helyett a -D kapcsolót ismerik.

Windows PowerShell

[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('Szia'))
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('U3ppYQ=='))
[Convert]::ToBase64String([IO.File]::ReadAllBytes('fajl.pdf'))

A klasszikus parancssorban a certutil -encode fajl.pdf fajl.txt is működik, az eredményt azonban BEGIN és END sorok közé zárja.

Képek és SVG a kódban

Kép Base64-be JavaScriptben

const file = document.querySelector('input[type=file]').files[0];
const reader = new FileReader();

reader.onload = () => console.log(reader.result);
reader.readAsDataURL(file);

A readAsDataURL metódus kész data URI-t ad vissza a fájltípussal együtt, például data:image/png;base64,iVBORw0KGg….

Tipp SVG ikonokhoz

Az SVG szöveg, ezért ha CSS-be illeszti, nem kell Base64-be kódolnia. Elég az URL-kódolóval kódolni, például url("data:image/svg+xml,%3Csvg…"). Az eredmény általában rövidebb, és az ikont könnyen módosíthatja benne, például megváltoztathatja a színét. SVG esetén a Base64-nek csak akkor van értelme, ha a rendszer más formát nem fogad el.

Base64 fájl dekódolása parancssorban

Ha a Base64 egy fájlban van, például egy API-tól vagy egy naplóból, közvetlenül visszaalakíthatja az eredeti fájllá:

Linux
base64 -d kep.txt > kep.png
macOS
base64 -d -i kep.txt -o kep.png
Windows (parancssor)
certutil -decode kep.txt kep.png
Windows PowerShell
[IO.File]::WriteAllBytes('kep.png', [Convert]::FromBase64String((Get-Content kep.txt -Raw)))
OpenSSL
openssl base64 -d -A -in kep.txt -out kep.png

Ha a fájl data URI fejléccel kezdődik, például data:image/png;base64,, előbb törölje ezt a részt. A certutil parancs a BEGIN és END sorokat tartalmazó fájlt is kezeli.

Gyakori hibák és javításuk

Az ékezetes betűk helyén ű és hasonló jelek jelennek meg

A szöveget UTF-8-ban kódolták, de Windows-1250-ként olvassa, vagy éppen fordítva. A tűz szó UTF-8-ban, Windows-1250-ként megjelenítve így néz ki: tűz. Ha a szöveg nem UTF-8, az eszköz megpróbálja Windows-1250-ként olvasni, és figyelmezteti erre.

InvalidCharacterError JavaScriptben

A btoa függvény csak Latin-1 karaktereket fogad el, ezért az ő, az ű vagy egy emoji esetén hibát jelez. A szöveget előbb alakítsa bájtokká a TextEncoder segítségével, ahogy a fenti példában.

Incorrect padding Pythonban

A JWT tokenből vagy webcímből származó Base64 végéről hiányoznak az = jelek. Pótolja őket, hogy a hossz osztható legyen néggyel. Ez az eszköz magától kiegészíti.

A + jelekből szóköz lett

Ha a Base64-et kódolás nélkül illeszti egy webcímbe, a szerver a + jelet szóköznek olvassa, és a dekódolás meghiúsul. Kódolja az értéket az URL-kódolóval, vagy használjon base64url-t.

Dekódolás után ismét Base64-et kap

A szöveget kétszer kódolták, például Szia → U3ppYQ== → VTNwcFlRPT0=. Dekódolja még egyszer: a Csere gombbal helyezze át az eredményt a bemenetbe, majd válassza újra a Dekódolás lehetőséget.

Nem jelenik meg a kép

A karakterlánc csonka, hiányzik az eleje, vagy kétszer szerepel benne a data URI kezdete. Vesse össze az első karaktereket a fenti táblázattal: a PNG-nek iVBORw0KGg, a JPEG-nek /9j/ karakterekkel kell kezdődnie.

Mikor érdemes Base64-et használni, és mikor nem

Érdemes

  • kis ikonokhoz és néhány kilobájtos képekhez közvetlenül CSS-ben vagy HTML-ben
  • bináris adatokhoz JSON-ben, XML-ben vagy konfigurációs fájlban
  • kulcsokhoz, tokenekhez és aláírásokhoz, amelyeknek egyszerű szövegnek kell lenniük
  • olyan rendszereken keresztüli továbbításhoz, amelyek csak szöveget kezelnek, például e-mailben

Nem érdemes

  • nagy képekhez és videókhoz a weben, mert egyharmaddal nagyobbak lesznek, és a böngésző nem tudja őket külön gyorsítótárazni
  • képekhez e-mailekben, mert a Gmail nem jeleníti meg őket
  • fájlok tárolására bináris oszlopokkal (BLOB) rendelkező adatbázisban, ahol a Base64 egyharmaddal több helyet foglal
  • jelszavak és bizalmas adatok védelmére, erre a titkosítás vagy a hashelés való

Fogalomtár

Bit
Az adat legkisebb egysége, értéke 0 vagy 1.
Bájt
Nyolc bitből álló csoport, vagyis egy 0 és 255 közötti szám.
UTF-8
A szöveg karaktereinek bájtokkal való leírási módja. Az ékezet nélküli betűk egy bájtot foglalnak, a magyar ékezetes betűk kettőt.
Padding
Az eredmény kiegészítése = jelekkel néggyel osztható hosszúságra.
base64url
A Base64 olyan változata, amely a + és / helyett a - és _ jelet használja, így webcímekben és fájlnevekben is használható.
MIME
Az e-mailek szabványa, amely a mellékletekhez Base64-et használ.
Data URI
Fájl leírása közvetlenül a szövegben, data:típus;base64,tartalom alakban.
PEM
Tanúsítványok és kulcsok formátuma: Base64 a BEGIN és END sorok között.
RFC 4648
A dokumentum, amely ma hivatalosan meghatározza a Base64, a Base32 és a Base16 kódolást.

GYIK

Mi a Base64?

A Base64 bármilyen adat leírása 64 olyan karakterrel, amely gond nélkül átjut a szöveges rendszereken: nagybetűk A-tól Z-ig, kisbetűk a-tól z-ig, számjegyek 0-tól 9-ig, valamint a + és / jel. A végén lévő = jel csak a hosszt egészíti ki. Nem tömörítés és nem titkosítás, csak ugyanazoknak a bájtoknak egy másik leírása.

Titkosítás a Base64?

Nem. A Base64-et bárki dekódolhatja jelszó vagy kulcs nélkül, így bizalmas adatot nem véd. Ha valahol Base64-ben kódolt jelszót lát, például HTTP Basic fejlécben, azt csak a titkosított HTTPS-kapcsolat védi.

Miért hosszabb a Base64 az eredeti szövegnél?

A Base64 az adatokat hármas bájtcsoportokra bontja, és mindegyiket négy karakterrel írja le. Az eredmény ezért nagyjából 33%-kal hosszabb. Ékezetes szövegnél a különbség még nagyobb, mert az olyan betűk, mint az á vagy az ő, UTF-8-ban két bájtot foglalnak.

Mi a base64url, és mikor használjam?

A base64url a címekhez és fájlnevekhez készült változat. A + és / helyett - és _ jelet használ, a végén lévő = jeleket pedig elhagyja. JWT tokenek, OAuth és URL-ben lévő aláírások használják. Dekódoláskor ez az eszköz automatikusan felismeri.

Hogyan dekódolhatok Base64-et képpé vagy PDF-fé?

Illessze be a Base64 karakterláncot vagy a teljes data URI-t, és válassza a Dekódolás lehetőséget. Ha az eredmény nem szöveg, az eszköz a tartalom alapján felismeri a fájltípust, képnél előnézetet mutat, és letöltés gombot kínál.

Miért kapok hibát dekódoláskor?

A Base64 csak ékezet nélküli betűket, számjegyeket és a + / = jeleket tartalmazhatja, base64url esetén a - _ jeleket is. A szóközök és sortörések nem zavarnak. Hibát okoz minden más karakter vagy a hiányosan másolt karakterlánc. A JWT token három, ponttal elválasztott részből áll, ezért mindegyiket külön dekódolja.

Elküldésre kerül a szövegem vagy a fájlom egy szerverre?

Nem. A kódolás és a dekódolás közvetlenül az Ön böngészőjében történik, a szöveg és a fájl nem hagyja el a számítógépét.

Hogyan alakíthatok át egy képet Base64-be?

Váltson a Fájl módra, válassza ki a képet, formátumként pedig a Data URI lehetőséget. Az eredményt közvetlenül az src attribútumba vagy CSS-be illesztheti. Néhány kilobájtos képekhez ideális, a nagyobbakat jobb külön fájlként hagyni.

Miért van a Base64 végén egy vagy két = jel?

Az = jelek a hosszt néggyel osztható számra egészítik ki. Két = jel azt jelenti, hogy az utolsó csoportban csak egy bájt volt, egy = jel pedig azt, hogy kettő. A tartalmat nem befolyásolják, és base64url esetén gyakran el is maradnak.

Hogyan dekódolhatok egy JWT tokent?

Bontsa fel a tokent a pontok mentén, és illessze be az első vagy a második részt. Egy JSON-t kap a token fejlécével vagy adataival. A harmadik rész az aláírás, olvasható szöveget nem tartalmaz.

Miért jelent meg a szöveg a Windows-1250 kódolásra figyelmeztetve?

A dekódolt bájtok nem voltak érvényes UTF-8, de szövegnek tűntek, ezért az eszköz megpróbálta a régebbi Windows-1250 kódolással olvasni, amelyet a közép-európai, köztük a magyar Windows-programok használtak. Ez csak becslés. Ha az eredménynek nincs értelme, töltse le az eredeti adatokat fájlként.

Miért Base64-ben vannak a Kubernetes Secret értékei, ha ez nem titkosítás?

A Base64 ott arra szolgál, hogy a YAML-fájlba bináris adatot, például tanúsítványt is el lehessen menteni. Védelmet nem nyújt, az értéket bárki elolvashatja, aki hozzáfér az objektumhoz. A védelemhez be kell kapcsolni a tárolt adatok titkosítását, és korlátozni kell a hozzáférési jogosultságokat.

Hogyan generálhatok véletlen kulcsot Base64-ben?

Használja az oldal fenti generátorát vagy az openssl rand -base64 32 parancsot. Mindkettő kriptográfiailag biztonságos véletlenforrásból dolgozik. A programozási nyelvek szokásos véletlenszám-generátorait, például a Math.random() függvényt, ne használja titkos kulcsokhoz.