cksum이 반환하는 가능한 값의 범위

cksum이 반환하는 가능한 값의 범위

반환될 수 있는 가능한 값의 범위를 찾고 있습니다 cksum. 예를 들어

echo -n '/my/path/filename' | cksum | cut -d' ' -f1

반품 2379496500. 반환될 수 있는 가능한 값(최소값 및 최대값)의 범위는 무엇입니까?

그런데 위의 매개변수는 지정된 파일의 내용이 아니라 정규화된 파일 경로의 문자열 값입니다.

답변1

이것POSIX 표준사용되는 CRC 알고리즘을 지정합니다 cksum. 여기에 관련 부분을 인용합니다(강조):

CRC 체크섬의 인코딩은 생성기 다항식에 의해 정의됩니다.

G(x)=x32 + x26 + x23 +x22 + x16 + x12 + x11 + x10 + x8 + x7 +x5 + x4 + x2 + x+1

수학적으로 특정 파일에 해당하는 CRC 값은 다음 프로세스에 의해 정의되어야 합니다.

평가할 n 비트는 n-1차 mod 2 다항식 M(x)의 계수로 간주됩니다. n 비트는 파일의 비트이고, 최상위 비트는 파일의 첫 번째 옥텟의 최상위 비트이고, 마지막 비트는 마지막 옥텟의 최하위 비트이며, 구현에 0비트(필요한 경우)로 채워집니다. 정수 옥텟 수 다음에 파일 길이를 이진 값으로 나타내는 하나 이상의 옥텟이 오고 최하위 옥텟부터 시작됩니다. 정수를 표현할 수 있는 최소 개수의 옥텟을 사용해야 합니다.

M(x)에 x 32를 곱하고 (즉, 왼쪽으로 32비트 이동) mod 2 나눗셈을 사용하여 G(x)로 나누어서 <= 31 차수인 나머지 R(x)를 생성합니다.

R(x)의 계수는 32비트 시퀀스로 처리됩니다.

비트 시퀀스가 ​​보완되고 그 결과가 CRC입니다.

따라서 CRC는 cksum32비트 시퀀스이므로 해당 값 범위입니다.0에서2 32 -1 =4294967295(구글님 감사합니다!)

관련 정보