Adler-32 Sağlama Toplamı Hesaplama

Adler-32 sağlama toplamını hesaplamak için metni girin.

Nasıl hesaplanır?

Araç metninizi bayt olarak okur (UTF-8; yani aksanlı tek bir harf iki bayt olabilir) ve iki toplam tutar. A = 1 ve B = 0 ile başlar. Her bayt için önce A = (A + bayt) mod 65521, sonra B = (B + A) mod 65521 yapılır. Sağlama toplamı B × 65536 + A olur; 0x önekli 8 haneli onaltılık sayı, ondalık sayı ve son A ve B değerleri olarak gösterilir. 65521, 65536'nın altındaki en büyük asal sayıdır. Boşluk, sekme ve satır sonu dahil her karakter sayılır, bu yüzden sondaki bir boşluk farklı bir sağlama toplamı verir. Kutu boşsa sonuç çıkmaz. Sağlama toplamı kazara değişiklikleri yakalar; güvenli bir özet (hash) değildir.

Örnek hesaplama

Metin: Wikipedia. Dokuz bayt değeri 87, 105, 107, 105, 112, 101, 100, 105, 97'dir. A sırasıyla 1+87 = 88, sonra 193, 300, 405, 517, 618, 718, 823 ve 920 olur. B her A'yı toplar: 88, 281, 581, 986, 1503, 2121, 2839, 3662 ve 4582. Yani A = 920 ve B = 4582. Sağlama toplamı 4582 × 65536 + 920 = 300286872, onaltılık olarak 0x11E60398'dir. Araç onaltılık sağlama toplamını 0x11E60398, ondalık değeri 300.286.872 ve parçaları A=920, B=4582 olarak gösterir.

Bu örneği dene →

Sık yapılan hatalar

  • Sonunda boşluk ya da satır sonu olan metni kopyalamak. Bu baytlar da dahil edilir, bu yüzden sonuç temiz metin üzerinden hesaplanan sağlama toplamıyla uyuşmaz.
  • Başka bir kodlamayla üretilmiş sağlama toplamıyla karşılaştırmak. Metin burada UTF-8 bayt olarak okunur; farklı kodlamayla kaydedilmiş dosyanın baytları, dolayısıyla sonucu farklıdır.
  • Adler-32'yi CRC-32 ya da MD5 ile karıştırmak. Değerler ve uzunluklar farklıdır, CRC-32 referansıyla eşleşmez.
  • Sağlama toplamını kurcalamaya karşı koruyan bir özet sanmak. Aynı değeri veren iki farklı metin üretmek kolaydır, bu yüzden yalnızca kazara hataları yakalar.
  • Onaltılık değeri ondalıkla karşılaştırmak. 0x11E60398 ve 300.286.872 aynı sayının iki yazılışıdır; aynı gösterimleri karşılaştırın.

Kaynaklar

Bu hesaplama hakkında

Adler-32 sağlama toplamı, metni veya ikili veriyi bayt bayt işleyen, iki çalışan toplamı — tüm baytların artı bir toplamı olan A (mod 65521) ve her bayttan sonraki A'nın çalışan toplamı olan B (mod 65521) — koruyan ve bunları B×65536 + A olarak tek bir 32-bit değerde birleştiren hızlı bir hata tespit algoritmasıdır. Bu hesaplayıcı, herhangi bir girdi metni için her iki çalışan toplamı ve nihai sağlama toplamını onaltılık ve ondalık biçimde hesaplar.

Adler-32, CRC-32'ye daha hızlı, daha basit bir alternatif olarak tasarlanmıştır ve en çok PNG, ZIP ailesi biçimleri ve sayısız başka sistem tarafından kullanılan sıkıştırma kütüphanesi olan zlib'e yerleşik sağlama toplamı olarak bilinir; burada iletim veya depolama bozulmalarını yakalamak için sıkıştırılmış veri bloklarına uygulanır. Yazılım geliştiricileri ve sistem programcıları, kendi Adler-32 uygulamalarının bilinen doğru bir referansla eşleştiğini doğrulamak veya hata ayıklama sırasında bir zlib akışına gömülü sağlama toplamını manuel olarak kontrol etmek için bu tür araçları kullanır.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Adler-32, zlib akışının sonundaki sağlama toplamıdır: son dört bayt sıkıştırılmamış verinin sağlama toplamıdır, bu yüzden buradaki onaltılık değerle karşılaştırabilirsiniz. Toplamların küçük kaldığı çok kısa girdilerde zayıftır ve birbirinden farklı birçok metin benzer değerlere dönüşebilir. Hangi değerle karşılaştırıyorsunuz, bir zlib akışıyla mı yoksa başka bir şeyle mi?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar