mzcrc

대문 / 공개프로젝트 / mzcrc

CRC.jpg
[JPG image (3.16 KB)]

mzcrc

  • 개발자
    조재혁(Mminzkn@minzkn.com)

  • 기록사항
    2009년 2월 17일 : 첫 구현
    2019년 5월 3일 : CRC32c 추가


1.1. 개요

CRC에 대한 라이브러리와 예제코드를 한번 만들어 봤다가 공개합니다.

이걸 만들게 된 동기는 인터넷 검색하다가 진짜로 시원하게 제대로 된 CRC라이브러리도 없고 예제코드도 없는거 같다는 느낌이 팍팍 들어서 만들게 됐습니다. 은근히 인터넷에 공개된 소스중에 결과값이 일치하는게 별로 없었습니다.

그래서 CRC16 / CRC32 / CRC64 에 대한 제대로된 라이브러리 한번 만들어 본답시고 만들어 봤습니다.

초보프로그래머라면 한번쯤 겪어야 할만한 소재로 CRC구현이 있을겁니다. 이제는 걱정마세요. 그냥 이거 가져다가 마음껏 응용해서 사용하시길~~~ 이 Library source의 장점은 조금의 노력으로 보다 다양한 CRC polynomial을 적용하여 확장시킬수 있도록 되어 있다는 부분입니다. 즉, CRC128같은 경우도 가능하며 CRC8도 가능합니다. CRC24는 조금은 무리수가 있지만...

생각보다 구현원칙에 입각하려다 보니까 좀 복잡해진 느낌이 있지만 결코 성능적인 부분이나 크기부분에서 다른 코드들보다 크게 떨어지지 않을겁니다. 어쨌건 나중에 더 최적화하기로 하고....

1.2. 현재 지원되는 CRC 알고리즘 목록

  • CRC16
    • IBM polynomial : 0x8005
    • CCIT polynomial : 0x1021
  • CRC32
    • IEEE 802.3 polynomial : 0x04c11db7
    • CRC32c polynomial : 0x1edc6f41
      • TEST-VECTOR
        {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() 로 확장 가능

1.3. 사용권한

mzcrc library source 는 수정없이 사용하신다면 누구나 그대로 사용하셔도 좋습니다. 단, source를 수정하셔서 사용하시려고 한다면 해당 수정사항에 대한 부분을 저에게 알려주시길 바랍니다.

1.4. 다운로드

Retrieved from https://www.minzkn.com:443/moniwiki/wiki.php/mzcrc
last modified 2024-05-17 23:26:16