man/data_processing
man · Veri İşleme

$ cksum

Bölüm 1 · Veri İşleme

dosya sağlama toplamlarını (checksum) ve blok sayılarını görüntüler.

SÖZDİZİMİ

cksum [-o 1 | 2 | 3] [dosya ...]
sum [dosya ...]

AÇIKLAMA

cksum aracı, girdi olarak verilen her dosya için standart çıktıya boşlukla ayrılmış üç alan yazar. Bu alanlar sırasıyla:

  1. Bir CRC sağlama toplamı,
  2. Dosyadaki toplam sekizli (octet) sayısı,
  3. Dosya adı.

Herhangi bir dosya adı belirtilmezse standart girdi (stdin) kullanılır ve dosya adı çıktıda yazılmaz.

sum aracı, varsayılan olarak geçmiş 1 numaralı algoritmayı kullanması dışında cksum aracı ile aynıdır. Yalnızca geriye dönük uyumluluk sağlamak amacıyla sunulmuştur.

SEÇENEKLER

Aşağıdaki seçenek mevcuttur:

  • -o 1 | 2 | 3: (Üstün olan) varsayılan algoritma yerine belirtilen geçmiş (legacy) algoritmaları kullanır:
    • Algoritma 1: Geçmiş BSD sistemleri tarafından sum(1) algoritması olarak kullanılan ve geçmiş AT&T System V UNIX sistemleri tarafından -r seçeneği kullanıldığında çalışan algoritmadır. Bu, her eklemeden önce sağa döndürme yapılan 16 bitlik bir sağlama toplamıdır; taşma (overflow) değerleri atılır.
    • Algoritma 2: Geçmiş AT&T System V UNIX sistemleri tarafından varsayılan sum(1) algoritması olarak kullanılan algoritmadır. Bu, 32 bitlik bir sağlama toplamıdır ve aşağıdaki gibi tanımlanır:
      s = sum of all bytes;
      r = s % 2^16 + (s % 2^32) / 2^16;
      cksum = (r % 2^16) + r / 2^16;
    • Algoritma 3: Yaygın olarak "32-bit CRC" algoritması olarak adlandırılan algoritmadır. Bu da 32 bitlik bir sağlama toplamıdır.

Hem Algoritma 1 hem de Algoritma 2, dosyanın bayt cinsinden boyutunun blok cinsinden boyutuyla değiştirilmesi dışında, varsayılan algoritmayla aynı alanları standart çıktıya yazar. Geçmiş nedenlerden dolayı blok boyutu, Algoritma 1 için 1024 ve Algoritma 2 için 512'dir. Kısmi bloklar yukarı yuvarlanır.

Varsayılan CRC Algoritması Detayları

Kullanılan varsayılan CRC, ISO 8802-3: 1989 ağ standardındaki CRC hata kontrolü için kullanılan polinoma dayanır. CRC sağlama toplamı kodlaması, şu üreteç polinomu tarafından tanımlanır:

G(x) = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1

Matematiksel olarak, verilen bir dosyaya karşılık gelen CRC değeri aşağıdaki prosedürle elde edilir:

  1. Değerlendirilecek $n$ bit, $n-1$ dereceli mod 2 polinomu $M(x)$'in katsayıları olarak kabul edilir. Bu $n$ bit, en anlamlı bit dosyanın ilk sekizlisinin en anlamlı biti ve son bit son sekizlinin en az anlamlı biti olacak şekilde dosyadaki bitlerdir; tam sayıda sekizli elde etmek için (gerekirse) sıfır bitleri ile doldurulur ve ardından en az anlamlı sekizli başta olacak şekilde dosyanın uzunluğunu ikili bir değer olarak temsil eden bir veya daha fazla sekizli gelir. Bu tamsayıyı temsil edebilecek en küçük sekizli sayısı kullanılır.
  2. $M(x)$, $x^{32}$ ile çarpılır (yani 32 bit sola kaydırılır) ve mod 2 bölmesi kullanılarak $G(x)$'e bölünür; bu işlem sonucunda derecesi $\le 31$ olan bir $R(x)$ kalanı elde edilir.
  3. $R(x)$'in katsayıları 32 bitlik bir dizi olarak kabul edilir.
  4. Bit dizisinin tümleyeni (complemented) alınır ve sonuç CRC sağlama toplamıdır.

ÇIKIŞ DURUMU

cksum ve sum araçları aşağıdaki çıkış durumlarını döndürür:

  • 0: Başarı durumu.
  • >0: Bir hata oluştu.

AYRICA BAKINIZ

md5(1)

Varsayılan hesaplama yöntemi, aşağıdaki makalede sözde kod (pseudo-code) olarak sunulan hesaplamayla birebir aynıdır:

Dilip V. Sarwate, "Computation of Cyclic Redundancy Checks Via Table Lookup", Communications of the ACM, Ağustos 1988.

STANDARTLAR

cksum aracının IEEE Std 1003.2-1992 (“POSIX.2”) standardı ile uyumlu olması beklenmektedir.

TARİHÇE

cksum aracı ilk kez 4.4BSD sürümünde yer almıştır.

HATALAR

Geleneksel algoritma kullanılarak kodlanan dosyaların boyutu yaklaşık %35 oranında genişler (her 3 baytlık veri, 4 bayt artı kontrol bilgisi haline gelir).