Base64 Kodlama ve Çözme
- Uzunluk
- —
Kullanılan formüller
Base64: her 3 bayt (24 bit) 6 bitlik 4 gruba bölünür ve A–Z, a–z, 0–9, +, / karakterleriyle yazılır; eksik baytlar = ile doldurulur.
Kısa cevap Base64 nedir, nasıl çözülür?
Base64, ikili veriyi yalnızca harf, rakam, + ve / karakterleriyle yazan bir kodlamadır; her 3 bayt 4 karaktere çevrilir ve eksik baytlar = ile doldurulur. Çözmek için karakterler 64'lük tabloya göre 6 bitlik gruplara, gruplar da baytlara çevrilir. Base64 bir şifreleme değildir; herkes tarafından kolayca geri çözülebilir.
Bir metni e-postada, URL'de, JSON içinde ya da bir mikrodenetleyicinin belleğinde taşımak için farklı kodlamalar kullanılır. Bu araç metni Base64, URL güvenli Base64, onaltılık (hex), URL kodlaması, ikili ve C bayt dizisine çevirir; Base64, hex, URL ve ikili verileri de yeniden metne çözer. Türkçe karakterler UTF-8 ile doğru şekilde işlenir ve hiçbir veri sunucuya gönderilmez.
Base64 nedir?
Base64, ikili veriyi yalnızca harf, rakam, + ve / karakterleriyle yazmanın yoludur. Her 3 bayt (24 bit) 6 bitlik dört gruba bölünür ve her grup 64 karakterlik tablodan bir karaktere karşılık gelir; veri 3'ün katı değilse sona = eklenir. Çıktı girdiden yaklaşık %33 uzundur. E-posta ekleri, JSON içinde resim, HTTP Basic kimlik doğrulaması ve JWT belirteçleri Base64 kullanır. Base64 bir şifreleme değildir; herkes kolayca geri çözebilir.
URL güvenli Base64, + ve / yerine - ve _ kullanır ve genellikle = dolgusunu atar; URL ve dosya adlarında sorun çıkarmaz.
URL kodlaması
URL'lerde boşluk, Türkçe karakterler ve &, ?, = gibi özel karakterler %XX biçiminde yazılır. Örneğin "güç kaynağı" → g%C3%BC%C3%A7%20kayna%C4%9F%C4%B1. Bir API'ye sorgu parametresi gönderirken değerleri bu şekilde kodlamak gerekir.
UTF-8 ve Türkçe karakterler
UTF-8'de İngilizce harfler 1 bayt, ç, ğ, ı, ö, ş, ü gibi Türkçe harfler 2 bayt yer kaplar. Bu yüzden "ş" harfi hex olarak C5 9F şeklinde iki bayttır. Bir LCD'ye veya seri porta metin gönderirken karakter sayısı ile bayt sayısının farklı olduğunu unutmayın; araç ikisini de gösterir.
Örnek: aynı metin üç farklı kodlamada
| Kodlama | Girdi | Çıktı |
|---|---|---|
| Base64 | Elektromall | RWxla3Ryb21hbGw= |
| Hex (UTF-8 baytları) | Elektromall | 456C656B74726F6D616C6C |
| URL kodlaması | çğüşiö | %C3%A7%C4%9F%C3%BC%C5%9Fi%C3%B6 |
Base64, her 3 baytı 4 karakterle gösterdiği için çıktı girdiden yaklaşık %33 uzun olur (1 KB veri → yaklaşık 1,37 KB). Eksik baytlar "=" dolgusu ile tamamlanır: "Elektromall" 11 bayttır (3'e bölümünden 2 bayt artar), bu yüzden çıktı tek bir "=" ile biter. Bayt sayısı 3'ün katıysa dolgu olmaz, bir bayt artarsa iki "=" gelir.
Hangi durumda hangi kodlama?
- Base64: İkili veriyi metin protokollerinde (e-posta, JSON, HTTP başlıkları, data URI) taşımak için.
- URL kodlaması (yüzde kodlama): Sorgu parametrelerindeki boşluk, Türkçe karakter ve özel işaretleri güvenle göndermek için.
- Hex: Baytları hata ayıklarken veya mikrodenetleyici kodunda sabit dizi olarak yazarken okumak için.
Sık yapılan hatalar
- Base64'ü şifreleme sanmak: Gizlilik sağlamaz; herkes geri çevirebilir. Parola veya sır saklamak için şifreleme/hash kullanın.
- URL'de standart Base64 kullanmak: "+" ve "/" karakterleri URL'de özel anlam taşır; URL-güvenli (base64url) biçimde "-" ve "_" kullanılır.
- Karakter kodlamasını belirtmemek: Türkçe karakterler UTF-8'de birden çok bayttır; farklı kodlamayla çözerseniz bozuk çıktı alırsınız.
- Dolgu karakterini silmek: Bazı kütüphaneler "=" olmadan çözemez; eksikse ekleyin.
Sıkça sorulan sorular
Base64 çözünce anlamsız karakterler çıkıyor, neden?
Kodlanan veri metin değil, resim veya sıkıştırılmış dosya gibi ikili bir veri olabilir. Araç bu durumda uyarı verir ve baytları hex olarak gösterir.
Base64 ile şifre saklanır mı?
Hayır. Base64 yalnızca bir gösterim biçimidir ve anında geri çözülür. Şifreler için bcrypt veya Argon2 gibi yavaş özet algoritmaları kullanılır; özet almak için hash oluşturucuya bakabilirsiniz.
C dizisi çıktısı ne işe yarar?
Metni veya küçük bir veriyi mikrodenetleyici koduna sabit dizi olarak gömmek için doğrudan kopyalayıp kullanabilirsiniz: const uint8_t veri[] = {0x4D, 0x65, …};
Base64 ile hash arasındaki fark nedir?
Base64 geri çevrilebilir bir kodlamadır; veri aynen geri elde edilir. Hash (MD5, SHA gibi) tek yönlü özet üretir ve orijinal veriye geri dönülemez. Parola doğrulamada hash, veri taşımada Base64 kullanılır.
Direnç, kondansatör ve diğer komponentler için ürünlerimize göz atın.
Geliştirici Ürünleri