데이터가 제대로 전송되었는지 확인하기 위해 기존에 사용하고 있던 가상 머신의 Windows Installer 이미지를 백업해 두었습니다. cksum
호기심에 cksum
동일한 파일의 실행 시간과 실행 시간을 비교해 보기로 했습니다. md5sum
I/O 캐싱과 관련이 없는지 확인하기 위해 각 작업을 몇 번 실행한 후의 결과는 항상 md5sum
약 절반의 시간이 걸렸습니다 cksum
. 두 가지 질문이 있습니다.
md5sum
왜 그렇게 더 빨라 졌나요cksum
?cksum
제가 선택 해야 할 이유가 있나요md5sum
?
저는 아치 리눅스를 사용하고 있습니다.
노트:어느 것이 더 낫다는 문제가 아닙니다. 이것은 이전에 여러 번 논의되었으며 md5sum
이것이 다음과 같은 용도로 사용되어서는 안 된다는 것을 알고 있습니다.암호화해시시. 구체적으로 어떻게 md5sum
찾는 수단으로 활용하는지 묻습니다.무작위 오류.
답변1
두 해싱 알고리즘은 서로 다른 계산을 수행하므로 서로 다른 성능 특성을 갖는 것은 놀라운 일이 아닙니다. Linux 시스템에서는 일반적 md5sum
으로 cksum
GNU coreutils
버전입니다. md5sum
잘 최적화되어 있고 한 번에 32비트 블록 내용에 대해 작동하는 C 라이브러리의 MD5 기능을 사용하십시오(참조:md5.c
그리고md5-block.c
). cksum
한 번에 한 바이트씩 내용을 처리하는 자체 CRC 구현을 사용합니다(참조:cksum.c
). md5sum
이는 다른 제품에 비해 속도가 중요한 요소일 수 있습니다 cksum
.
무작위 오류를 찾는 데 어떤 도구가 더 적합한지 결정하려면 관련된 알고리즘의 수학적 속성을 분석해야 합니다. 매우 기본적인 수준에서는 cksum
32비트 해시가 생성되는 반면 md5sum
128비트 해시가 생성되므로 후자는 우발적인 충돌에 더 강해야 합니다. 따라서 특히 뒤집힌 비트 수가 많은 경우 무작위 오류를 더 잘 감지할 수 있습니다. 더 높습니다).
선택해야 할 유일한 이유 cksum
는 md5sum
전자가 POSIX에 의해 지정되므로 모든 POSIX 시스템이 이를 갖게 되기 때문이라고 생각합니다. 이것이 요소라면 cksum
더 적절할 것입니다.
(암호화 해시에 대한 귀하의 의견은 cksum
전혀 암호화 해시가 아니므로 의문의 여지가 있습니다.)