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:
- Bir CRC sağlama toplamı,
- Dosyadaki toplam sekizli (octet) sayısı,
- 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-rseç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.
- Algoritma 1: Geçmiş BSD sistemleri tarafından
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:
- 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.
- $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.
- $R(x)$'in katsayıları 32 bitlik bir dizi olarak kabul edilir.
- 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).