← man/data_processing
cksum — man cksum — 80×24
ugur@toprak:~/man/data_processing$man cksum
Bölüm 1 Veri İşleme

cksum

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

Özet

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

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çıklandığı gibi varsayılan olarak geçmiş 1 numaralı algoritmayı kullanması dışında cksum aracı ile aynıdır. Yalnızca uyumluluk sağlamak amacıyla sunulmuştur.

Seçenekler aşağıdaki gibidir:

  • -o: (Üstün olan) varsayılan algoritma yerine geçmiş 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 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 (overflow) 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 ‘32bit CRC’ algoritması olarak adlandırılan algoritmadır. Bu 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.

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ı, ü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 tanımlanır:

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 da derecesi <= 31 olan bir R(x) kalanı üretir.

R(x)'in katsayıları 32 bitlik bir dizi olarak kabul edilir.

Bit dizisinin tümleyeni (complemented) 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 çıkar.

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 ACM, Ağustos 1988.

Standartlar

cksum aracının IEEE Std 1003.2-1992 (“POSIX.2”) standardına uyması beklenmektedir.

Geçmiş

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

macOS 26.4 28 Nisan 1995 macOS 26.4