iso파일와 같은 큰파일을 받으면 파일과 함께 체크썸파일이라는 것이 따라온다.
어떻게 쓰는 것인지 잘 모르는 사람이 많다. 과거에 통신속도가 나쁠 때 파일을 받으면, 그 public사이트에 있는 파일이
내PC로 잘 받아졌는지 확신할 수 없는 경우가 많았다. 파일내려받기에 사용하던 프로토콜이 UDP/IP였기
때문일 것 같다. 그래서 파일 체크썸이라는 것을 만들어서 제공한다.


체크썸은 문자열에 대해, hash-function을 적용하여, 유니키하게 만든 키값이다. 키값은 32bit, 40bytes등등 다양하다.
hash-function은 종류가 다양한데, crc32, md5, sha1, sha2, 등등이 있다.


내려받은 파일에 체크썸프로그램을 적용해서 나온 결과와 첨부된 파일에 있는 체크썸을 비교해서 같으면
내려받기한 파일의 내용을 거의 100% 믿을 수 있게 되는 것이다.


요즈음 http로 받는 파일들은 거의 믿을 수 있다. 사이트에 있는 파일과 받아온 파일의 사이즈만 비교해도 충분하다.
하지만, 토렌토와 같이 오랜동안 파일내려받기를 하면 checksum커맨드를 한번 적용해 보고 싶어진다.


crc32은 매우 간단한 형태의 hash-function이다.
crc32는 perl라이브러리에 있다. libarchive-zip-perl을 설치한 후 사용할 수 있다.
$ sudo apt-get install libarchive-zip-perl
$ crc32 linux-3.16.tar.xz
  0d86f47f


md5은 오래동안 사용되어왔으며 새로운 알고리즘의 hash-function에 밀리고 있다.
$ md5sum linux-3.16.tar.xz
  5c569ed649a0c9711879f333e90c5386

기본적인 기능외에도 hash-function의 다양한 요건에 따라 여러가지 알고리즘이 나오고 있다.


$ sha1sum linux-3.16.tar.xz
  bce412286eaac9765b45d445e63c19047fca1ab5
sha1은 요즈음 형상관리시스템 GIT에 git-object를 생성하는 데 있어 사용하고 있다.


hash-function은 체크썸을 위해 것보다, 더 큰 응용분야가 있는데 원래 암호학에 사용하던 것인데,
통신프로토콜, 파일체크썸에 응용한 것이다.


TCP/IP응용SW를 만드는 과정에서 개발자들은 메지지를 설계함에 있어 메시지 앞단에 꼭 '약방에 감초'처럼 넣는 것이
있는데 바로 체크썸이다.


TCP스택에서 체크썸을 하고 있기 때문에, TCP/IP를 사용하는 메시지에서 체크썸을 체크해서 (운용중에) Fault가 나는 경우를 보지 못했다.