Base45 Kodlayıcı ve Kod Çözücü

Metni, onaltılık baytları veya dosyaları Base45'e dönüştürün ve geri çevirin. Base45, QR kodun alfanümerik modundaki 45 karakteri kullanır; böylece ikili veri QR kodlara az ek yükle sığar.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Metni Base45'e dönüştürmek için "Kodla", Base45'i yeniden metne veya baytlara dönüştürmek için "Kodu çöz" seçeneğini seçin.
  2. Girdinizi yazın veya yapıştırın ya da bir dosya açın. Boşlukları silmeyin: boşluk alfabenin bir parçasıdır.
  3. Sertifika yükü gibi ikili verilerin kodunu çözerken çıktıyı "Onaltılık" olarak değiştirin.
  4. Sonucu kopyalayın veya dosya olarak indirin.

Base45 nedir?

Base45, RFC 9285'te tanımlanmıştır. Alfabesi 0-9 rakamlarından, A-Z büyük harflerinden ve dokuz sembolden oluşur: boşluk ve $ % * + - . / :. Bunlar, bir QR kodun kompakt alfanümerik modunda saklayabildiği 45 karakterin ta kendisidir. Boşluğun bir ayırıcı değil, alfabenin gerçek bir karakteri olduğuna dikkat edin.

Kodlayıcı girdiyi her seferinde iki bayt olarak alır, bunları 0 ile 65535 arasında bir sayı olarak okur ve bu sayıyı en düşük anlamlı basamak önce gelecek şekilde üç Base45 basamağı olarak yazar. Sondaki tek bir bayt iki karaktere dönüşür. Metin olarak sonuç girdinin 1,5 katı boyutundadır, yani Base64'ten daha büyüktür.

Base45 neden QR kodlara uygundur?

Alfanümerik modda bir QR kod iki karakteri 11 bite sığdırır. Base64 küçük harflere ihtiyaç duyduğu için bu modu kullanamaz ve karakter başına 8 bitlik bayt moduna geri döner; bu, her veri baytı için kabaca 10,7 bit demektir. Base45 alfanümerik modda bayt başına yalnızca 8,25 bit gerektirir; böylece aynı veri, taranması daha kolay olan daha küçük bir QR koda sığar.

Kodu çözerken boşlukları tam olarak oldukları gibi bırakın; yalnızca satır sonları yok sayılır. Küçük harfler alfabenin parçası değildir ve geçersiz olarak bildirilir.

AB Dijital COVID Sertifikalarının kodunu çözme

AB Dijital COVID Sertifikalarının QR kodları HC1: ile başlayan bir metin içerir. Geri kalanı Base45'tir: sertifika verileri CBOR olarak kodlanır, COSE ile imzalanır, zlib ile sıkıştırılır ve ardından Base45 ile kodlanır. İçine bakmak için:

  1. HC1: önekini kaldırın. Bu dört karakter geçerli Base45 karakterleri olduğundan onları bırakmak yanlış baytlar üretir.
  2. Geri kalanın kodunu burada onaltılık çıktıyla çözün. zlib verisi genellikle 78 baytıyla başlar.
  3. Baytları zlib ile açın ve CBOR verisini başka bir araçla ayrıştırın.

Bu araç yalnızca Base45 adımını gerçekleştirir. Veriyi açmaz, ayrıştırmaz veya imzayı doğrulamaz.

Kodda Base45

# Python (pip install base45)
import base45
base45.b45encode(b'AB')     # RFC 9285 örneği: BB8
base45.b45decode('BB8')     # b'AB'

Teknik özellikler

Alfabe0-9 A-Z boşluk $ % * + - . / :
Çıktı boyutu2 bayt başına 3 karakter (%150)
DolguYok
StandartRFC 9285
Büyük/küçük harf duyarlıEvet

Örnekler

Girdi (UTF-8)Çıktı
Hello, World!%69 VDK2E:3404ESVDX0
Base64.isSH8LQEG%61*5P2
你好C-SEFK*.K

Sıkça sorulan sorular

Base45 çıktısı neden boşluk içeriyor?

Boşluk, alfabedeki 45 karakterden biridir ve veri taşır. Base45 metnindeki boşlukları kırpmayın veya birleştirmeyin; aksi halde kod çözme başarısız olur ya da yanlış baytlar verir.

Bir HC1: dizesinin kodunu nasıl çözerim?

HC1: önekini kaldırın, geri kalanın kodunu onaltılık çıktıyla çözün, ardından sonucu zlib ile açın ve CBOR verisini ayrı bir araçla okuyun. Bu araç yalnızca Base45 adımını gerçekleştirir.

Base45 büyük/küçük harfe duyarlı mı?

Evet. QR alfanümerik modunda küçük harf bulunmadığından alfabeye yalnızca büyük harfler dahildir. Küçük harfli girdi, konumuyla birlikte geçersiz olarak bildirilir.

Base45, Base64'ten daha kompakt mı?

Düz metin olarak hayır: Base45 girdinin 1,5 katı, Base64 ise yaklaşık 1,33 katı boyutundadır. Bir QR kodun içinde ise evet, çünkü Base45 daha yoğun alfanümerik modu kullanabilir.