Sözdizimi
cksum [-o 1 | 2 | 3] [file ...]
sum [file ...]
Açıklama
cksum aracı, her girdi dosyası için standart çıktıya boşlukla ayrılmış üç alan yazar. Bu alanlar; bir CRC sağlama toplamı, dosyadaki toplam sekizli (octet) sayısı ve dosya adıdır. Herhangi bir dosya adı belirtilmezse, standart girdi kullanılır ve dosya adı yazılmaz.
sum aracı, aşağıda açıklanan geçmişteki 1. algoritmayı varsayılan olarak kullanması dışında cksum aracı ile aynıdır. Yalnızca uyumluluk amacıyla sağlanmıştır.
Seçenekler aşağıdaki gibidir:
-o: (Daha üstün olan) varsayılan algoritma yerine eski algoritmaları kullanın.
Algoritma 1, eski BSD sistemleri tarafından sum(1) algoritması olarak ve eski AT&T System V UNIX sistemleri tarafından -r seçeneği kullanıldığında sum(1) algoritması olarak kullanılan algoritmadır. Bu, her eklemeden önce sağa döndürme yapılan 16 bitlik bir sağlama toplamıdır; taşma yoksayılır.
Algoritma 2, eski 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 = tüm baytların toplamı;
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, 32 bitlik bir sağlama toplamıdır.
Hem algoritma 1 hem de 2, dosyanın bayt cinsinden boyutunun yerini dosyanın blok cinsinden boyutunun alması dışında, varsayılan algoritmayla aynı alanları standart çıktıya yazar. Tarihsel nedenlerden dolayı, blok boyutu algoritma 1 için 1024 ve algoritma 2 için 512'dir. Kısmi bloklar yukarı yuvarlanır.
Kullanılan varsayılan CRC, ISO 8802-3: 1989 ağ standardındaki CRC hata denetimi için kullanılan polinoma dayanmaktadır. CRC sağlama toplamı kodlaması, üretici polinom 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 tanımlanır:
Değerlendirilecek n bit, n-1 dereceli bir mod 2 M(x) polinomunun katsayıları olarak kabul edilir. Bu n bit, dosyadaki bitlerdir; en anlamlı bit dosyanın ilk sekizlisinin en anlamlı biti ve son bit ise son sekizlinin en az anlamlı biti olacak şekilde, tam sayıda sekizli elde etmek için (gerekirse) sıfır bitleriyle tamamlanır; bunu, dosyanın uzunluğunu ikili bir değer olarak temsil eden ve önce en az anlamlı sekizli gelecek şekilde yerleştirilen bir veya daha fazla sekizli takip eder. 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ölme kullanılarak G(x)'e bölünür; böylece derecesi <= 31 olan bir R(x) kalanı elde edilir.
R(x) katsayıları 32 bitlik bir dizi olarak kabul edilir.
Bit dizisinin tümleyeni alınır ve sonuç CRC'dir.
Çıkış Durumu
cksum ve sum araçları başarı durumunda 0, bir hata oluştuğunda ise >0 değeriyle sonlanır.
Ayrıca Bakınız
md5(1)
Varsayılan hesaplama, aşağıdaki ACM makalesinde sözde kod (pseudo-code) olarak verilen hesaplama ile aynıdır.
Dilip V. Sarwate, “Computation of Cyclic Redundancy Checks Via Table Lookup”, Communications of the Tn ACM, August 1988.
Standartlar
cksum aracının IEEE Std 1003.2-1992 (“POSIX.2”) standardına uygun olması beklenmektedir.
Geçmiş
cksum aracı 4.4BSD ile sunulmuştur.