CKSUM(1)

명칭
cksum, sum - 파일의 체크 섬과 블록 카운트를 표시한다

서식
cksum [-o 1 | 2 | 3] [file ...] sum [file ...]

해설
cksum 유틸리티는, 각 입력 파일에 대해서, 공백에서 단락지어진 3 개의 필드를 표준 출력에 출력합니다. 이것들 3 필드는 각각, 체크 섬 CRC , 파일중의 8중창수, 그리고 파일명입니다. 파일이 하나도 지정되지 않는 경우는 표준 입력이 이용되어 파일명은 표시되지 않습니다.

sum 유틸리티는 cksum 유틸리티와 같습니다만, 이후에 해설하는 디폴트로 역사적 알고리즘 1 을 사용하는 점이 다릅니다. 호환성 (을) 위해서만 제공되고 있습니다.

옵션은 이하와 같습니다:

-o  디폴트의(보다 뛰어난) 알고리즘에 대신해, 역사적인 알고리즘을 이용합니다.

    알고리즘 1 은 sum(1) 의 알고리즘으로서 역사적인 BSD 시스템에 대하고, 또, -r 옵션 첨부로 이용하는 경우의 sum(1) 알고리즘으로서 역사적인 AT&T UNIX 시스템에 대해 이용되어 온 것입니다. 이것은 가산마다 오른쪽 로테이션을 실시하는 16 비트 체크 섬이며, 산출 넘치고는 무시됩니다.

    알고리즘 2 는 디폴트의 sum(1) 알고리즘으로서 역사적인 AT&T 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 (은)는, 네트워크의 표준 iso8802-3 에 있어서의 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 비트는 파일로부터 얻을 수 있습니다만, 파일의 최초의 8중창의 최상정도 비트를 최상정도, 마지막 8중창의 최하정도 비트를 최하정도로 합니다. (필요하면) 제로 비트를 묻어 8중창단위에 정리해 파일의 길이를 바이너리치로 표현한 1 개 혹은 그 이상의 8중창(최하정도 8중창이 앞)이 거기에 계속됩니다. 이 정수를 표현 가능한 최소 개수의 8중창이 이용됩니다.

M(x)는 x^32 배(즉 32 비트의 왼쪽 쉬프트) 해, 2 를 법으로서 G(x)로 나눕니다. 그 결과 31 차 이하의 잉여 R(x)를 얻을 수 있습니다.

R(x)의 계수는 32 비트의 비트열이라고 보여집니다.

그 비트열을 반전한 결과가 CRC 입니다.

진단

관련 항목
md5(1)

디폴트의 계산방법은, 다음의 ACM 논문으로 유사 코드를 이용해 기술되고 있는 것과 등가입니다. Computation of Cyclic Redundancy Checks Via Table Lookup, Dilip V. Sarwate, Communications of the Tn ACM, August 1988.

표준
cksum 유틸리티는 p1003.2-92 (을)를 만 하고 있다고 생각되고 있습니다.

역사
cksum 유틸리티는 4.4BSD (으)로부터 등장했습니다.