#keywords crc,library,crc32,crc64,crc16,polynomial,checksum,체크섬,hash #title mzcrc [wiki:Home 대문] / [wiki:CategoryOpenProject 공개프로젝트] / [wiki:mzcrc mzcrc] ---- [[attachment:CRC.jpg]] == [wiki:mzcrc mzcrc] == * 개발자 조재혁([mailto:minzkn@minzkn.com]) * 기록사항 2009년 2월 17일 : 첫 구현[[br]] 2019년 5월 3일 : CRC32c 추가[[br]] [[TableOfContents]] === 개요 === CRC에 대한 라이브러리와 예제코드를 한번 만들어 봤다가 공개합니다. 이걸 만들게 된 동기는 인터넷 검색하다가 진짜로 시원하게 제대로 된 CRC라이브러리도 없고 예제코드도 없는거 같다는 느낌이 팍팍 들어서 만들게 됐습니다. 은근히 인터넷에 공개된 소스중에 결과값이 일치하는게 별로 없었습니다. 그래서 CRC16 / CRC32 / CRC64 에 대한 제대로된 라이브러리 한번 만들어 본답시고 만들어 봤습니다. 초보프로그래머라면 한번쯤 겪어야 할만한 소재로 CRC구현이 있을겁니다. 이제는 걱정마세요. 그냥 이거 가져다가 마음껏 응용해서 사용하시길~~~ 이 Library source의 장점은 조금의 노력으로 보다 다양한 CRC polynomial을 적용하여 확장시킬수 있도록 되어 있다는 부분입니다. 즉, CRC128같은 경우도 가능하며 CRC8도 가능합니다. CRC24는 조금은 무리수가 있지만... 생각보다 구현원칙에 입각하려다 보니까 좀 복잡해진 느낌이 있지만 결코 성능적인 부분이나 크기부분에서 다른 코드들보다 크게 떨어지지 않을겁니다. 어쨌건 나중에 더 최적화하기로 하고.... === 현재 지원되는 CRC 알고리즘 목록 === * CRC16 * IBM polynomial : 0x8005 * CCIT polynomial : 0x1021 * CRC32 * IEEE 802.3 polynomial : 0x04c11db7 * CRC32c polynomial : 0x1edc6f41 * TEST-VECTOR {{{#!plain {0x00000000, ""}, {0x22620404, "The quick brown fox jumps over the lazy dog"}, {0xC1D04330, "a"}, {0x364B3FB7, "abc"}, {0x02BD79D0, "message digest"}, {0x9EE6EF25, "abcdefghijklmnopqrstuvwxyz"}, {0xA245D57D, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}, {0x477A6781, "12345678901234567890123456789012345678901234567890123456789012345678901234567890"}, {0xE3069283, "123456789"}, }}} * CRC64 * ISO polynomial : 0x000000000000001b * CRC X polynomial extension * __mz_crc_fast_template(), __mz_crc_slow_template() 로 확장 가능 === 사용권한 === mzcrc library source 는 수정없이 사용하신다면 누구나 그대로 사용하셔도 좋습니다. 단, source를 수정하셔서 사용하시려고 한다면 해당 수정사항에 대한 부분을 저에게 알려주시길 바랍니다. === 다운로드 === * [attachment:mzcrc-1.0.1-source-20190503.tar.gz mzcrc-1.0.1 source] * [attachment:mzcrc-1.0.0.tar.gz mzcrc-1.0.0 source]