Rastgele Base64 Oluşturucu

Tarayıcınızın güvenli rastgele sayı üretecini kullanarak rastgele Base64 dizeleri oluşturun. Uzunluğu bayt veya karakter cinsinden belirleyin, tek seferde 1000 taneye kadar üretin ve standart ya da URL güvenli çıktıyı seçin.

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

Nasıl kullanılır

  1. "Uzunluk" değerini girin ve "Birim" ayarında bu değerin rastgele bayt sayısı mı ("Rastgele bayt") yoksa Base64 karakter sayısı mı ("Karakter") olduğunu seçin. Anahtar oluşturuyorsanız bayt kullanın: 32 bayt, 256 bitlik bir anahtar demektir.
  2. Kaç dizeye ihtiyacınız olduğunu "Adet" alanına girin ve "Ayırıcı" olarak "Yeni satır", "Virgül" veya "Boşluk" seçeneğini belirleyin.
  3. "Standart" veya "URL güvenli" varyantı seçin. Bayt birimiyle çalışırken hedef sistem = işaretlerini beklemiyorsa "Dolgu" seçeneğini de kapatabilirsiniz.
  4. Yeni değerler için "Oluştur" düğmesine tıklayın, ardından listeyi "Tümünü kopyala" ile kopyalayın veya "İndir" ile indirin.

Bayt, karakter ve entropi

Rastgele bir dizenin gücü bit cinsinden entropiyle ölçülür. Her rastgele bayt 8 bit ekler; dolayısıyla 16 bayt 128 bit, 32 bayt ise 256 bit verir. Base64 yalnızca bu baytların nasıl yazıldığını değiştirir: her karakter 6 bit taşır ve her 3 bayt 4 karaktere dönüşür. Araç her dizenin entropisini gösterir, böylece bunu bir bakışta kontrol edebilirsiniz.

Bayt biriminde çıktının kodu çözüldüğünde tam olarak o sayıda rastgele bayt elde edilir; anahtarların ve gizli değerlerin ihtiyaç duyduğu da budur. Karakter biriminde ise her biri 64 karakterlik alfabeden eşit olasılıkla seçilen, tam olarak istenen sayıda karakter elde edersiniz; bir sistem sabit uzunlukta bir token istiyor ve onu metin olarak saklıyorsa bu birimi kullanın.

BaytBase64 karakteriEntropiTipik kullanım
121696 bitAES-GCM nonce değeri (IV)
1624 (dolgusuz 22)128 bitTuzlar, oturum ve CSRF token'ları, AES-128 anahtarları
3244 (dolgusuz 43)256 bitAES-256 ve HMAC-SHA256 anahtarları, HS256 gizli anahtarları, API anahtarları
6488 (dolgusuz 86)512 bitHMAC-SHA512 anahtarları, HS512 gizli anahtarları

Rastgele Base64 değerlerinin kullanım alanları

  • JWT gizli anahtarları. RFC 7518, HMAC anahtarının en az hash çıktısı kadar uzun olmasını şart koşar: HS256 için 32, HS384 için 48, HS512 için 64 bayt. Bazı kütüphaneler gizli anahtar dizesini olduğu gibi kullanır, bazıları ise önce Base64 kodunu çözer; bu yüzden kullandığınız kütüphanenin hangisini beklediğini kontrol edin. JWT çözücü, HS256'dan HS512'ye kadar olan imzaları her iki tür gizli anahtarla da doğrular; HMAC oluşturucu ise anahtarı metin, onaltılık veya Base64 olarak kabul eder.
  • Uygulama anahtarları. Örneğin Laravel, 32 baytlık şifreleme anahtarını .env dosyasında APP_KEY=base64:... biçiminde tutar; bu araçla 32 bayt olarak oluşturulan dizeler de tam olarak bu biçimdedir.
  • Kubernetes Secret nesneleri. data altındaki değerler dolgulu standart Base64 olmalıdır. Bayt biriminde, Standart varyant ve dolgu açıkken oluşturulan bir dize doğrudan buraya yazılabilir; Pod da ham rastgele baytları alır. Uygulama Base64 metninin kendisini bekliyorsa değeri bunun yerine stringData altına koyun.
  • URL'lerdeki token'lar. Parola sıfırlama bağlantıları, davet kodları ve URL içinde taşınan diğer token'lar, + ve / karakterlerini - ve _ ile değiştiren URL güvenli varyantı kullanmalıdır. Ayrıntılar için Base64URL sayfasına bakın.

Neden Math.random değil de crypto.getRandomValues?

Math.random() hızlı, genel amaçlı bir üreteçtir. Çıktısı öngörülemez olacak şekilde tasarlanmamıştır ve bazı motorlarda iç durum birkaç değerden yola çıkılarak yeniden oluşturulabilir. Bu araç, işletim sistemi tarafından tohumlanan kriptografik olarak güvenli bir üreteç olan crypto.getRandomValues() fonksiyonunu kullanır; bu, openssl rand komutunun ve Python'un secrets modülünün arkasındaki kaynakla aynı türdendir. Değerler cihazınızda oluşturulur ve hiçbir zaman gönderilmez veya saklanmaz.

Kodda rastgele Base64 oluşturma

# Shell: 32 rastgele bayt, Base64 olarak (44 karakter)
openssl rand -base64 32
head -c 32 /dev/urandom | base64

# Python
import base64, secrets
base64.b64encode(secrets.token_bytes(32)).decode()
secrets.token_urlsafe(32)        # URL güvenli, dolgusuz, 43 karakter

// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url');   // URL güvenli, dolgusuz

// Tarayıcı
const bytes = crypto.getRandomValues(new Uint8Array(32));
btoa(String.fromCharCode(...bytes));

Sıkça sorulan sorular

Rastgele bir anahtar veya gizli değer ne kadar uzun olmalı?

Oturum kimlikleri, CSRF token'ları ve tuzlar gibi yalnızca benzersiz ve tahmin edilemez olması gereken değerler için 16 bayt (128 bit) yeterlidir. AES-256 anahtarları, HMAC-SHA256 anahtarları ve HS256 gizli anahtarları için 32 bayt (256 bit), HMAC-SHA512 ve HS512 için ise 64 bayt kullanın.

Bu, openssl rand -base64 32 ile aynı mı?
Aynı türde bir değer üretir. Uzunluk 32 bayt, varyant Standart ve dolgu açıkken her sonuç 44 karakter uzunluğundadır, tek bir = ile biter ve kodu çözüldüğünde 32 rastgele bayt verir. Değerlerin kendisi elbette her seferinde farklıdır.
Bayt birimini mi, karakter birimini mi kullanmalıyım?

Şifreleme anahtarları ve Kubernetes Secret nesnelerinde olduğu gibi dizenin kodu çözülecekse bayt kullanın. Bir sistem tam olarak belirli uzunlukta bir token istiyor ve metni olduğu gibi kullanıyorsa karakter kullanın. Karakter birimiyle oluşturulan bir dizenin sorunsuz çözülmesi yalnızca uzunluğu 4'ün katı olduğunda garanti edilir.

URL güvenli varyanta ne zaman ihtiyacım olur?
Değerin bir URL'ye, sorgu dizesine, çereze veya dosya adına girdiği her durumda. Standart Base64'te / URL yollarını böler, + ise form kodlamalı sorgu dizelerinde boşluğa dönüşür. URL güvenli Base64 bunların yerine - ve _ kullanır ve genellikle dolgusuz yazılır.
Oluşturulan değerler bir yerde saklanıyor veya bir yere gönderiliyor mu?

Hayır. Değerler tarayıcınızdaki JavaScript tarafından oluşturulur, hiçbir zaman iletilmez ve sayfadan ayrıldığınızda kaybolur. Birini gerçek bir gizli anahtar olarak kullanmaya başladığınızda, onu sohbet mesajlarında veya destek kayıtlarında değil, bir parola yöneticisinde veya gizli anahtar deposunda saklayın.