CKSUM(1) | FreeBSD General Commands Manual | CKSUM(1) |
名称
cksum, sum — ファイルのチェックサムとブロックカウントを表示する書式
cksum | [ -o 1 | 2 | 3][ file ...] |
sum | [ file ...] |
解説
cksum ユーティリティは、各入力ファイルに対して、空白で区切られた 3 つのフィールドを標準出力に出力します。これら 3 フィールドはそれぞれ、チェックサム CRC、ファイル中のオクテット数、そしてファイル名です。ファイルが一つも指定されない場合は標準入力が用いられ、ファイル名は表示されません。sum ユーティリティは cksum ユーティリティと同じですが、以降で解説するデフォルトで歴史的アルゴリズム 1 を使用する点が異なります。互換性のためだけに提供されています。
オプションは以下の通りです:
- -o
-
デフォルトの(より優れた)アルゴリズムに代えて、歴史的なアルゴリズムを用います。
アルゴリズム 1 は sum(1) のアルゴリズムとして歴史的な BSD システムにおいて、また、 -r オプション付きで用いる場合の sum(1) アルゴリズムとして歴史的な AT&T System V UNIX システムにおいて用いられてきたものです。これは加算のたびに右ローテーションを行う 16 ビットチェックサムであり、算出あふれは無視されます。
アルゴリズム 2 はデフォルトの sum(1) アルゴリズムとして歴史的な AT&T System V UNIX システムで用いられてきたものです。これは 32 ビットのチェックサムであり、以下のように定義されます:
s = sum of all bytes; r = s % 2^16 + (s % 2^32) / 2^16; cksum = (r % 2^16) + r / 2^16;
アルゴリズム 3 は一般に‘
32bit CRC
’アルゴリズムと呼ばれているものです。これは 32-bit チェックサムです。アルゴリズム 1, 2 のいずれも、デフォルトアルゴリズムと同じフィールドを標準出力に書き込みます。ただし、ファイルサイズはバイト単位ではなくブロック単位となります。歴史的理由から、アルゴリズム 1 ではブロックサイズは 1024、アルゴリズム 2 では 512 となっています。ブロックに満たない部分は切り上げられます。
デフォルトで用いられる CRC は、ネットワークの規格 ISO 8802-3: 1989 における CRC エラーチェックに用いられる多項式に基づいています。 CRC チェックサムエンコーディングは、次の生成多項式で定義されます:
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
数学的には、与えられたファイルに対応する CRC 値は次の手順で定義されます。
M(x) は x^32 倍 (すなわち 32 ビットの左シフト) し、 2 を法として G(x) で割ります。その結果 31 次以下の剰余 R(x) が得られます。
R(x) の係数は 32 ビットのビット列と見なされます。
そのビット列を反転した結果が CRC です。
終了ステータス
The cksum and sum utilities exit 0 on success, and >0 if an error occurs.関連項目
md5(1)デフォルトの計算方法は、次の ACM 論文で疑似コードを用いて記述されているものと等価です。 Dilip V. Sarwate, Computation of Cyclic Redundancy Checks Via Table Lookup, Communications of the Tn ACM, August 1988.
規格
cksum ユーティリティは、 IEEE Std 1003.2-1992 (“POSIX.2”) に適合するはずです。歴史
cksum ユーティリティは、 4.4BSD で登場しました。April 28, 1995 | FreeBSD |