ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- ファイルのチェックサムとサイズの出力
/usr/bin/cksum [file...]
cksum コマンドは、各入力ファイルの循環冗長性検査 (CRC) を算出し、その結果を各ファイルのオクテット数と共に標準出力に書き込みます。
正常に処理された各ファイルについて cksum 方式は次の書式でチェックサム情報を出力します。
"%u %d %s\n" <checksum>, <# of octets>, <path name>
file オペランドが指定されなかった場合、パス名と先行する空白は省略されます。
使用される CRC は、参照されるイーサネット標準における 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 値は、数学的には次の手順で定義されます。
評価される n ビットは、2 を法とした n-1 次多項式 M(x) の係数と見なされます。これらの n ビットは、ファイル内のビットに対応し、最上位ビットはファイルの先頭のオクテットの最上位ビットであり、最後のビットはファイルの最後のオクテットの最下位ビットです。これらの n ビットには、オクテットの数が整数になるように、(必要であれば) 0 のビットが埋め込まれ、その後にファイルの長さを表す 1 つまたは複数のオクテットが、最下位オクテットを先頭にして 2 進数で続きます。この整数を表すことができる最小のオクテット数が使用されます。
M(x) の値は、x 32 で乗算されて (つまり、32 ビット左にシフト)、2 を法とした除算を使用して G(x) で除算されます。結果として、次数 ≤ 31 の除余 R(x) が生成されます。
R(x) の係数は、32 ビットのシーケンスとみなされます。
ビットシーケンスの補数がとられ、その結果が CRC になります。
次のオペランドを指定できます。
検査するファイルのパス名。file オペランドを指定しないと、標準入力が使用されます。
cksum コマンドは通常、疑いのあるファイルを同じファイルの信頼できるバージョンと簡単に比較して、ノイズの多いメディアを介して送信されたファイルが正しく受信できたかどうかを確認するのに使用します。ただし、この比較は、暗号化した場合ほど安全ではありません。損傷を受けたファイルが、元のファイルと同じ CRC を生成する確率は天文学的低い値です。ただし、意図的に同じ CRC を生成することは困難ではありますが、不可能ではありません。
cksum の入力ファイルはどんなタイプでもかまいませんが、文字型特殊デバイスファイルでは期待通りの結果が得られないことがあります。本書では、入力時に使用されるブロックサイズを規定していないため、文字型特殊ファイルのチェックサムでは、これらのファイル内のデータがすべて処理されるとはかぎりません。
アルゴリズムは、オクテット単位に分割されたビットストリームで表現されます。ファイルが 2 つのシステム間で送信されるときに、何らかのデータ変換 (8 ビット文字を 9 ビットバイトに移行したり、リトルエンディアンのバイト順序をビッグエンディアンに変更するなど) が行われる場合、同じ CRC 値を得ることは期待できません。このような変換を実行する実装では、cksum を拡張して、そのような状況に対処します。
2G バイト (231 バイト) 以上のファイルを検出した場合の cksum の動作については、largefile(5) を参照してください。
cksum の実行に影響を与える次の環境変数についての詳細は、environ(5) を参照してください。LANG、LC_ALL、LC_CTYPE、LC_MESSAGES、および NLSPATH。
次の終了値が返されます。
ファイルはすべて正しく処理されました。
エラーが発生しました。
属性についての詳細は、attributes(5) を参照してください。
|
digest(1), sum(1), bart(1M), attributes(5), environ(5), largefile(5), standards(5)