CRC-16이란?
데이터 오류를 검출하기 위한 짧은 체크값입니다. 같은 CRC-16이라도 MODBUS, CCITT, XMODEM 등 서로 다른 초기값·다항식·비트 순서를 쓰는 경우가 많습니다.
세 가지 프리셋 차이
CRC-16은 ‘16비트 오류 검출 코드’를 통칭할 뿐이고, 산업·통신 표준마다 초기값(CRC를 시작하기 전에 넣는 값), 한 바이트를 비트 단위로 처리하는 순서(보통 LSB first vs MSB first), 다항식 표기가 조금씩 달라 같은 입력이라도 결과가 다를 수 있습니다. 이 도구의 세 가지는 흔히 인용되는 정의입니다.
MODBUS(RTU)는 현장 버스·PLC 등에서 자주 쓰이며, 초기값 0xFFFF에서 시작해 바이트를 한쪽 방향으로 시프트하며 계산합니다. CCITT-FALSE는 초기값 0xFFFF이지만 바이트를 다른 방향(고비트 우선)으로 넣는 방식이라 MODBUS와 값이 다릅니다. XMODEM은 예전 파일 전송 프로토콜 등에서 쓰이던 형태로, 초기값이 0x0000인 점이 CCITT-FALSE와 구분됩니다. 장비 매뉴얼에 적힌 이름과 ‘바이트 순서(앞·뒤 바이트)’까지 함께 맞춰야 합니다. 수식(다항식)까지 외울 필요는 없고, 어떤 프리셋을 쓰는지만 일치하면 됩니다.
사용 방법
CRC 종류(MODBUS, CCITT-FALSE, XMODEM)를 고른 뒤 입력 형식을 선택합니다. 일반 텍스트는 UTF-8 바이트로, HEX는 공백 없는 짝수 개의 16진 숫자로 넣습니다. ‘계산’을 누르면 16비트 결과가 표시됩니다. 통신 로그와 비교할 때는 바이트 순서(보통 상위·하위 바이트)를 함께 확인하세요.
관련 정보
CRC는 오류 ‘검출’용이며 손상된 데이터를 복구하지 않습니다. 암호화나 무결성 서명이 아닙니다. 장비·프로토콜마다 ‘CRC-16’이라도 정의가 다를 수 있으니, 반드시 해당 사양서의 테스트 벡터와 맞춰 보세요.