"cksum"이 "md5sum"보다 느리게 실행되는 이유는 무엇입니까?

"cksum"이 "md5sum"보다 느리게 실행되는 이유는 무엇입니까?

데이터가 제대로 전송되었는지 확인하기 위해 기존에 사용하고 있던 가상 머신의 Windows Installer 이미지를 백업해 두었습니다. cksum호기심에 cksum동일한 파일의 실행 시간과 실행 시간을 비교해 보기로 했습니다. md5sumI/O 캐싱과 관련이 없는지 확인하기 위해 각 작업을 몇 번 실행한 후의 결과는 항상 md5sum약 절반의 시간이 걸렸습니다 cksum. 두 가지 질문이 있습니다.

  1. md5sum왜 그렇게 더 빨라 졌나요 cksum?
  2. cksum제가 선택 해야 할 이유가 있나요 md5sum?

저는 아치 리눅스를 사용하고 있습니다.

노트:어느 것이 더 낫다는 문제가 아닙니다. 이것은 이전에 여러 번 논의되었으며 md5sum이것이 다음과 같은 용도로 사용되어서는 안 된다는 것을 알고 있습니다.암호화해시시. 구체적으로 어떻게 md5sum찾는 수단으로 활용하는지 묻습니다.무작위 오류.

답변1

두 해싱 알고리즘은 서로 다른 계산을 수행하므로 서로 다른 성능 특성을 갖는 것은 놀라운 일이 아닙니다. Linux 시스템에서는 일반적 md5sum으로 cksumGNU coreutils버전입니다. md5sum잘 최적화되어 있고 한 번에 32비트 블록 내용에 대해 작동하는 C 라이브러리의 MD5 기능을 사용하십시오(참조:md5.c그리고md5-block.c). cksum한 번에 한 바이트씩 내용을 처리하는 자체 CRC 구현을 사용합니다(참조:cksum.c). md5sum이는 다른 제품에 비해 속도가 중요한 요소일 수 있습니다 cksum.

무작위 오류를 찾는 데 어떤 도구가 더 적합한지 결정하려면 관련된 알고리즘의 수학적 속성을 분석해야 합니다. 매우 기본적인 수준에서는 cksum32비트 해시가 생성되는 반면 md5sum128비트 해시가 생성되므로 후자는 우발적인 충돌에 더 강해야 합니다. 따라서 특히 뒤집힌 비트 수가 많은 경우 무작위 오류를 더 잘 감지할 수 있습니다. 더 높습니다).

선택해야 할 유일한 이유 cksummd5sum전자가 POSIX에 의해 지정되므로 모든 POSIX 시스템이 이를 갖게 되기 때문이라고 생각합니다. 이것이 요소라면 cksum더 적절할 것입니다.

(암호화 해시에 대한 귀하의 의견은 cksum전혀 암호화 해시가 아니므로 의문의 여지가 있습니다.)

관련 정보