Hex'ten Base64'e Dönüştürücü

Onaltılık baytları yapıştırın, aynı veriyi Base64 olarak alın. Boşluk, iki nokta ve 0x önekleri gibi ayırıcılar otomatik olarak kaldırılır; böylece hash değerlerini ve parmak izlerini olduğu gibi yapıştırabilirsiniz.

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

Nasıl kullanılır

  1. Hex dizesini girdi alanına yapıştırın. Kaynak olarak Onaltılık, hedef olarak Base64 önceden seçilidir.
  2. Biçimlendirme konusunda endişelenmeyin: boşluklar, satır sonları, iki nokta işaretleri, kısa çizgiler ve 0x ya da \x önekleri yok sayılır.
  3. Değer bir URL'ye, JWT'ye veya JSON Web Key'e yerleştirilecekse hedefi Base64URL olarak değiştirin.
  4. Base64 sonucunu kopyalayın.

Hex neden Base64'e dönüştürülür

Hash araçlarının çoğu özetleri hex olarak yazdırır, ancak birçok protokol üçte bir daha kısa olan Base64'ü bekler. Tipik durumlar:

  • Subresource Integrity. Betik ve stil sayfalarındaki integrity özniteliği, sha384- ve ardından gelen 64 Base64 karakteri gibi Base64 biçiminde bir özet içerir.
  • Content Security Policy. Satır içi betiklere izin veren hash'ler, Base64 değeriyle birlikte 'sha256-...' biçiminde yazılır.
  • HTTP API'lerinde sağlama toplamları. Content-MD5 başlığı ve Amazon S3 sağlama toplamı başlıkları, md5sum komutunun yazdırdığı hex dizesini değil, ikili özetin Base64 karşılığını taşır.
  • Kısa tanımlayıcılar. Bir UUID 16 bayttır: 32 hex basamağı eder, ancak dolgusuz Base64URL olarak yalnızca 22 karakter tutar.

Kabul edilen hex biçimleri

Onaltılık basamaklar büyük/küçük harfe duyarlı değildir. Dönüştürücü, kod çözmeden önce boşlukları, satır sonlarını, iki nokta işaretlerini, noktalı virgülleri, virgülleri, kısa çizgileri ve 0x, \x, % ve &#x öneklerini kaldırır. Bu sayede AB:CD:EF gibi OpenSSL parmak izleri, 0x12, 0x34 gibi C dizileri, \x12\x34 gibi kaçışlı dizeler, yüzde kodlamalı baytlar ve kısa çizgili UUID'ler sorunsuz işlenir.

Temizlendikten sonra girdi, bayt başına iki olmak üzere çift sayıda basamak içermelidir. Tek sayıda basamak hata olarak bildirilir ve genellikle baştaki bir sıfırın kaybolduğunu gösterir; örneğin 0abc yerine abc yazılmış olabilir.

Hex metnini değil, baytları kodlayın

Sık yapılan bir hata, hex özetini sıradan bir metinden Base64'e kodlayıcıya yapıştırmaktır. Bu durumda temsil ettikleri baytlar yerine 0-9a-f karakterleri kodlanır ve sonuç olması gerekenin iki katı uzunlukta çıkar: bir SHA-256 özeti için 44 yerine 88 karakter. SRI özniteliği veya sağlama toplamı başlığı gibi ikili özet bekleyen her şey bu değeri reddeder. Bu dönüştürücü ise önce hex değerini baytlara çözer.

# Kabuk: hex özetinden Base64'e
printf '%s' "$HEX" | xxd -r -p | base64

# Bir dosyanın SRI değeri tek adımda
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (hex olmayan ilk karakterde sessizce durur)
Buffer.from(h, 'hex').toString('base64')

Sıkça sorulan sorular

Hex dizem için neden hata alıyorum?

Ya girdide sıfır yerine O harfi gibi onaltılık basamak olmayan bir karakter vardır ya da basamak sayısı tektir. Hata mesajı geçersiz karakterin konumunu gösterir; uzunluk tek sayıysa baştaki bir 0'ın eksik olup olmadığını kontrol edin.

Base64 çıktısı ne uzunlukta olur?
Bayt sayısını bulmak için hex basamak sayısını 2'ye bölün, ardından her 3 bayt için 4 karakter hesaplayıp yukarı yuvarlayın. 64 basamaklı bir SHA-256 özeti, bir = işareti dahil 44 Base64 karakterine dönüşür.
Subresource Integrity hash'i nasıl oluşturulur?
Dosyanın SHA-384 özetini hesaplayın, hex özetini burada dönüştürün ve Base64 değeriyle integrity="sha384-..." yazın. OpenSSL ile bunu tek komutta yapabilirsiniz: openssl dgst -sha384 -binary file.js | openssl base64 -A.
Çıktı standart Base64 mü, URL güvenli Base64 mü?
SRI, CSP ve HTTP sağlama toplamı başlıklarının gerektirdiği gibi + ve / içeren standart Base64. URL güvenli çıktıya ihtiyacınız olduğunda hedef kodlama olarak Base64URL'yi seçin.