SipHash-2-4 Hesaplayıcı

SipHash-2-4 özetini hesaplamak için 32 haneli hex anahtar ve bir mesaj girin.

Sonuç

ed5159c956cd5602
000102030405060708090a0b0c0d0e0f
11 bayt

Nasıl hesaplanır?

Araç, mesajınızın UTF-8 baytları üzerinde SipHash-2-4 çalıştırır. Anahtar tam 32 onaltılık karakter (16 bayt) olmalıdır; büyük ya da küçük harf ve baştaki/sondaki boşluklar kabul edilir, geri gösterilirken küçük harfe çevrilir. Mesaj 8 baytlık little-endian bloklara bölünür, her blok 2 turla duruma karıştırılır, son blok mesaj uzunluğunu taşır ve ardından 4 sonlandırma turu gelir. 64 bitlik sonuç, en anlamlı bayt önce olacak şekilde 16 onaltılık karakterle yazılır. Anahtar alanı boşsa 000102…0e0f kullanılır; mesaj parametresi hiç gönderilmemişse abc alınır, boş mesaj ise sıfır bayt olarak özetlenir. Uzunluğu yanlış ya da onaltılık olmayan karakter içeren anahtar sonuç vermez. Gösterilen uzunluk karakter değil bayt sayısıdır.

Örnek hesaplama

000102030405060708090a0b0c0d0e0f anahtarını ve hello world mesajını kullanın. Mesaj 11 ASCII karakterdir, yani 11 bayttır: bir tam 8 baytlık blok ve 3 baytlık artık; son blok ayrıca 11 uzunluğunu da kodlar. Sıkıştırma ve sonlandırma turlarından sonra özet ed5159c956cd5602 olur. Mesajın tek bir karakterini ya da anahtarın tek bir hanesini değiştirirseniz tamamen farklı bir 16 karakterlik değer çıkar.

Bu örneği dene →

Sık yapılan hatalar

  • 32 onaltılık karakterden kısa ya da uzun anahtar kullanmak. 16 baytlık anahtar gerekir; parola ya da 64 karakterlik anahtar sonuç vermez.
  • Anahtarı metin sanmak. Onaltılık haneler olarak okunur; password dizesi geçersizdir ve 00 tek bir sıfır baytı demektir.
  • Özeti bayt sırasını denkleştirmeden başka araçlarla kıyaslamak. Bu araç 64 bitlik değeri en anlamlı bayt önce yazar; bazı kütüphaneler 8 baytı bellek sırasıyla yazar ve ters görünür.
  • SipHash-2-4'ü genel amaçlı parola ya da dosya özeti olarak kullanmak. Hash tabloları ve kısa girdilerin kimlik doğrulaması için anahtarlı bir özettir; 64 bitlik çıktı çarpışma direnci için kısadır.
  • ASCII dışı karakterlerin birkaç bayt tuttuğunu unutmak. café metni 5 bayttır ve uzunluk satırı bunu yansıtır.

Bu hesaplama hakkında

SipHash-2-4, Jean-Philippe Aumasson ve Daniel J. Bernstein tarafından özellikle hash tablolarını hash-flooding hizmet reddi saldırılarına karşı korumak için tasarlanmış, hızlı ve anahtarlı bir sözde rastgele fonksiyondur — bu saldırı tekniğinde bir saldırgan, bir hash tablosunun kovalarında çarpışacak şekilde bilinçli olarak seçilmiş girdiler gönderir, aramaları O(1)'den O(n)'ye düşürerek sunucuyu tıkar. “2-4” adı, tur yapısını ifade eder: mesaj bloğu başına 2 sıkıştırma turu ve 4 sonlandırma turu.

16 baytlık (128 bitlik) gizli bir anahtar ve bir mesaj verildiğinde, hesaplanması ucuz ama anahtar olmadan tahmin edilmesi zor olan 64 bitlik bir özet üretir. Python, Rust, Ruby ve Redis gibi diller ve sistemler bu yüzden dizeler ve sözlük/hash-map anahtarları için varsayılan hash fonksiyonu olarak dahili olarak SipHash kullanır. Bu hesaplayıcı, verilen bir hex anahtarla herhangi bir metnin SipHash-2-4 özetini hesaplar; uygulamaları doğrulayan veya algoritmanın nasıl davrandığını keşfeden geliştiriciler için kullanışlıdır.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Herhangi bir SipHash-2-4 uygulamasını denetlemenin kolay yolu, 000102030405060708090a0b0c0d0e0f anahtarıyla boş mesajı denemektir; burada 726fdb47dd0e0e31 çıkmalıdır. Referans test vektörleri çoğu zaman sekiz baytı bellek sırasıyla, yani 31 0e 0e dd 47 db 6f 72 diye listeler; bu aynı değerin tersten okunmuş hâlidir. Kodunuz farklı sonuç veriyorsa uzun girdilere geçmeden önce bu durumu karşılaştırın. Hangi dil ya da kütüphaneyle karşılaştırıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar