Skip to content

Methodology

Kod araçları metodolojisi

RFC uyumlu ilkeller, yalnızca tarayıcıda yürütme, yükler üzerinde sıfır analitik.

By Published

Kod kümesi, tamamı tarayıcıda çalışan ve hiçbiri yükünü hiçbir yere göndermeyen on yardımcı program içerir. Bu sayfa, her aracın gerçekte ne yaptığını belgelemektedir — uyduğu RFC’ler, kullandığı ilkeller ve kasıtlı olarak yapmadıkları.

Base64 (RFC 4648)

Standart alfabe: A-Z a-z 0-9 + /, 4’ün katlarına= ile doldurulur. URL güvenli varyant (base64url), +’yı - ile ve /’yi _ ile değiştirir, dolguyu kaldırır.

Uygulama: JavaScript’in yerel btoa / atob’u kodlamayı işler, ancak yalnızca Latin-1 dizelerini (her bayt bir karakterdir) destekler. UTF-8 için önce dizeyi TextEncoder ile kodlarız, ardından sonuçtaki bayt dizisi üzerinde btoa çalıştırırız. Bu, tarayıcıda bağımlılık olmaksızın keyfi Unicode metnini güvenle Base64 kodlamanın tek yoludur.

JWT kod çözücü (yalnızca inceleme, doğrulama yok)

JWT’ler (RFC 7519), noktalarla ayrılmış üç base64url kodlu segmenttir: header.payload.signature. Kod çözücümüz böler, başlık ve yükün base64url kodunu çözer, bunları JSON olarak ayrıştırır ve sonucu görüntüler. İmzayı doğrulamıyoruz.

İmza doğrulama, imzalama anahtarını gerektirir — genellikle bir HMAC sırrı veya RSA/ECDSA genel anahtarı — ve bu anahtarın yayıncıdan gelmesi gerekir. Yalnızca tarayıcı tabanlı bir araç, üçüncü bir taraf tarafından verilen JWT’yi anlamlı şekilde doğrulayamaz, bu nedenle biz de bunu iddia etmiyoruz. Kod çözücüyü inceleme için kullanın; gerçek doğrulama için uygulamanızın sunucu tarafı yığınını kullanın.

Büyük/küçük harf dönüştürücü

camelCase, snake_case, kebab-case, PascalCase, CONSTANT_CASE, Title Case, Sentence case ve küçük / BÜYÜK harf arasında çeviri yapar. Algoritma, büyük/küçük harf geçişlerini, kısa çizgileri, alt çizgileri ve boşlukları eşleştiren bir normal ifade kullanarak girdiyi “kelimeler”e böler ve ardından hedef kurala göre yeniden birleştirir.

Uç durum: tanımlayıcılardaki sayılar. Geleneğimiz, sayı-harf sınırlarını kelime sınırları olarak tutmaktır (bu nedenle parseInt32, parse, int, 32’ye bölünür) ancak açıkça tanımlayıcı benzeri dizilerdeki harf-sayı sınırlarını bölmemektir (bu nedenle md5, md_5 değil, tek bir kelime olarak kalır).

Hash üreteci

Web Crypto API (crypto.subtle.digest) aracılığıyla SHA-1, SHA-256, SHA-384, SHA-512, işletim sisteminin yerel uygulaması üzerinde ince bir sarmalayıcıdır. Kasıtlı olarak MD5 sunmuyoruz — tarayıcı onu yerel olarak sağlamıyor (kriptografik açıdan kırık olduğu için) ve güvenlikle ilgili hiçbir şey için kimsenin kullanmaması gereken bir hash fonksiyonunu desteklemek için 2 KB’lık bir dolgu çekmek istemiyoruz.

Çıktı küçük harf onaltılık sistemdedir. Tüm işlemler, Web Crypto API’nin asenkron olmasına karşın kullanıcının bakış açısından senkrondur — modern cihazlarda megabayt altındaki girdiler için gecikme milisaniyenin altındadır.

UUID üreteci

İki varyant:

  • v4 (rastgele): Mevcut olduğunda crypto.randomUUID(), yoksa manuel crypto.getRandomValues tabanlı üretece geri döner. 122 bit entropi.
  • v7 (zaman damgası + rastgele): 48 bit Unix zaman damgası ms + 74 bit rastgele. Oluşturma zamanına göre sıralanabilir, bu da v7’yi veritabanı birincil anahtarları için tercih edilen seçenek yapar.

Parola üreteci

Karakter kümesi boyutunun uint32’ye sığan en büyük katına karşı reddetme örneklemesiyle crypto.getRandomValues kullanır. Bu, modülo önyargısını ortadan kaldırır — naif random32 % charsetSizeyaklaşımı, charsetSize 2³²’yi eşit bölemediğinde önyargılıdır; bu her gerçekçi karakter kümesi için geçerlidir.

Entropi uzunluk × log₂(karakter_kümesi) bit olarak hesaplanır ve canlı olarak görüntülenir. Güç etiketi, entropiyi beş banda eşler (çok zayıf / zayıf / orta / güçlü / çok güçlü); eşikler yaygın güvenlik rehberliğiyle eşleşir (NIST SP 800-63B, yüksek riskli kullanım için ≥ 80 bit önerir).

Algoritma ayrıntıları: entropi ve rastgelelik ilkelleri

Parola ve UUID üreteçleri, bu kümedeki kriptografik açıdan güçlü rastgeleliğe bağlı tek araçlardır; doğruluğu iki tarayıcı ilkeline dayanır.

Önyargısız karakter seçimi (reddetme örneklemesi)

K boyutunda bir karakter kümesi ve 32 bitlik işaretsiz rastgele çekme r verildiğinde, naif r % K, K2³²’yi bölmedikçe daha küçük indekslere doğru önyargılıdır. eşik = 2³² − (2³² mod K) hesaplar, çekeriz ve r ≥ eşik olan her çekimi reddederiz. Karakter başına beklenen çekme sayısı: herhangi bir K ≤ 2³²/16için < 1,05. Çıktı karakter kümesi üzerinde düzgün dağılmıştır.

Entropi muhasebesi

Parola entropisi uzunluk × log₂(K) bittir. Güç bantlarımız NIST SP 800-63B rehberliğini izler:

BantEntropi (bit)Kaba kuvvet tahmini (10⁹ tahmin/san)
Çok zayıf< 40saniyeler ila saatler
Zayıf40-60saatler ila haftalar
Orta60-80aylar ila yıllar
Güçlü80-100yüzyıllar
Çok güçlü≥ 100jeolojik zaman

UUID v7 düzeni (RFC 9562)

bits[0..47]   = unix_ms (48 bit)
bits[48..51]  = sürüm = 0111 (4 bit)
bits[52..61]  = rastgele veya ms altı sayaç (10 bit)
bits[62..63]  = varyant = 10 (2 bit)
bits[64..127] = rastgele (64 bit)
toplam rastgele: 74 bit — pratikte çakışmaya dayanıklı

Kaynaklar ve referanslar

Kümedeki her araç bir birincil spesifikasyona eşlenir: Base64’e RFC 4648, JWT’ye RFC 7519, hash’lere FIPS PUB 180-4, UUID’lere RFC 9562, parola entropisi NIST SP 800-63B. Web Crypto API’nin kendisi bir W3C önerisidir. Kanonik URL’ler için aşağıdaki Kaynaklar bloğuna bakın.

Varsayımlar ve sınırlamalar

  • Yalnızca tarayıcıda yürütme. Araçlar, Web Crypto ile modern bir tarayıcı varsayar. Eski veya sertleştirilmiş ortamlar (bazı kiosk kilitleri, parçacık olmaksızın sunucu tarafı Node) JS uygulamasına geri döner ve kriptografik gücü kaybeder.
  • İmza doğrulaması yok. JWT kod çözme inceler ancak doğrulamaz. Bu aracı bir kimlik doğrulama hattının parçası olarak kullanmayın.
  • MD5 yok. Kimliği doğrulanmış kullanım için kriptografik açıdan kırık; kontrol toplamı için bile kasıtlı olarak dahil edilmedi. Küçük bir performans ödünlüğüyle SHA-256 kullanın.
  • Büyük girdiler için akış yok.Hash ve Base64 araçları tam girdiyi belleğe yükler. 100 MB’ın üzerindeki girdiler kodlama sırasında sekmeyi duraklatır.
  • Yük telemetrisi yok. Bu araçlara yapıştırılan hiçbir şeyi kaydetmiyor, depolamıyor veya iletmiyoruz. Takas: kullanıcı yeniden üretmeden belirli bir girdinin neden yanlış işlendiğini de ayıklayamıyoruz.
  • UUID v7 zaman damgaları milisaniye hassasiyetindedir. Aynı milisaniyede 1000’den fazla UUID üretmek, sıralama benzersizliği için 10 bitlik ms altı rastgeleliğe dayanır.
  • Parola gücü buluşsaldır. Gerçek saldırı zorluğu yalnızca entropia değil, saldırganın bilinen kalıplarına (sözlük, sızdırılmış parola kümeleri) bağlıdır.

Yapmadıklarımız

  • İçeriği şifreleme veya şifreyi çözme. Web Crypto API bunu destekler; kripto API’lerinin yanlış kullanımı tehlikeli olduğundan bir kullanıcı arayüzü sunmuyoruz.
  • JWT doğrulama. Yukarıya bakın.
  • Yapısal olarak güzel yazdırma — mümkün olduğunca kullanıcının biçimlendirmesini koruyoruz. Tam güzel yazdırma için özel bir biçimlendirici kullanın.
  • Yükleri kaydetme. Kullanıcının yapıştırdığı hiçbir şey tarayıcıyı asla terk etmez.

Frequently asked questions

Convertitive hangi Base64 standardını uygular?
RFC 4648 §4'te tanımlanan standart alfabe (A–Z, a–z, 0–9, +, / karakterleri, = dolgusu ile). RFC 4648 §5'ten base64url varyantı (+ → -, / → _, dolgu yok) de desteklenir ve URL güvenli geçiş etkinleştirildiğinde otomatik seçilir. Her iki varyant da RFC 4648'de (IETF, 2006) tam olarak belirtilmiştir.
Convertitive JWT imzalarını doğrular mı?
Hayır. JWT kod çözücü, RFC 7519 §3 uyarınca noktayla ayrılmış ilk iki segmenti Base64url kodunu çözerek başlık ve yükü ayrıştırır ve görüntüler. İmza doğrulama, kasıtlı olarak hiçbir zaman istemediğimiz imzalama sırrını veya genel anahtarı gerektirir. Tüm JWT işleme yerel olarak tarayıcıda çalışır; token asla cihazınızı terk etmez.
Hash üreteci hangi hash fonksiyonlarını kullanır ve bunlar kriptografik açıdan güvenli midir?
Üreteci, uygulamaları NIST FIPS 180-4'te belirtilen Web Crypto API (window.crypto.subtle) aracılığıyla SHA-1, SHA-256, SHA-384 ve SHA-512 kullanır. Tüm hesaplama tarayıcı içindedir. SHA-1, çakışma direnci için kullanımdan kaldırılmıştır (SHAttered saldırısı, Stevens ve diğ., 2017) ancak Git nesne tanımlayıcıları gibi eski bağlamlarda hâlâ kullanılmaktadır. Bütünlük veya kimlik doğrulama için SHA-256 veya daha yüksek kullanın.
UUID üreteci rastgeleliği nasıl sağlar?
UUID'ler RFC 9562 §5.4'te belirtildiği gibi sürüm 4 (rastgele) üretilir. Her UUID, tarayıcının işletim sistemi düzeyinde entropi kaynağı tarafından sağlanan bir CSPRNG (kriptografik açıdan güvenli sözde rastgele sayı üreteci) olan window.crypto.getRandomValues() kullanılarak üretilir. Bu, kriptografik açıdan güvenli olmayan Math.random()'dan farklıdır. 122 rastgele bit, çift başına ~5 × 10⁻³⁶ çakışma olasılığı verir.
Herhangi bir kod aracı verilerimi bir sunucuya gönderiyor mu?
Hayır. Base64 kodlama/kod çözme, JWT ayrıştırma, hash oluşturma, UUID üretimi ve tüm diğer kod yardımcı programları Web Crypto API ve standart JavaScript aracılığıyla tamamen tarayıcıda çalışır. Hiçbir yük herhangi bir sunucuya iletilmez. Bunu tarayıcı DevTools → Ağ sekmesini açarak ve bu araçları kullanırken sıfır giden istek gözlemleyerek doğrulayabilirsiniz.

Related

Published May 14, 2026