Nasıl kullanılır
- Hex dizesini girdi alanına yapıştırın. Kaynak olarak Onaltılık, hedef olarak Base64 önceden seçilidir.
- 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.
- Değer bir URL'ye, JWT'ye veya JSON Web Key'e yerleştirilecekse hedefi Base64URL olarak değiştirin.
- 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-MD5başlığı ve Amazon S3 sağlama toplamı başlıkları,md5sumkomutunun 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?
= işareti dahil 44 Base64 karakterine dönüşür.Subresource Integrity hash'i nasıl oluşturulur?
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ü?
+ ve / içeren standart Base64. URL güvenli çıktıya ihtiyacınız olduğunda hedef kodlama olarak Base64URL'yi seçin.