CRC-32 / ISO-HDLC
PKZip · PNG · 이더넷
가장 일반적인 CRC-32 구현으로 CRC-32b라고도 합니다. 이는 다항식 0x04C11DB7의 반영된 형태, 즉 0xEDB88320을 사용합니다. 입력 바이트와 출력은 모두 비트 반영(LSB 우선)되며 초기 값과 최종 XOR은 모두 0xFFFFFFFF로 설정됩니다.
ZIP, gzip, PNG 이미지, 이더넷 프레임(IEEE 802.3), PKCS#7 및 많은 레거시 시스템에서 널리 사용됩니다. 이는 사실상 "기본 CRC-32" 변형입니다.
| 다항식 | 0x04C11DB7 (정상) / 0xEDB88320 (반영) |
| 초기값 | 0xFFFFFFFF |
| 입력 반사 | 예(RefIn = true) |
| 출력 반사 | 예(RefOut = true) |
| 최종 XOR | 0xFFFFFFFF |
| 값 확인 | 0xCBF43926 ("123456789"의 경우) |
CRC-32C / 카스타뇰리
iSCSI · NVMe · SCTP
1993년 G. Castagnoli와 동료가 제안한 이 변형은 다항식 0x1EDC6F41(0x82F63B78 형식으로 반영됨)을 사용합니다. 동일한 해밍 거리에서 ISO-HDLC 다항식보다 더 강력한 버스트 오류 감지 기능을 제공합니다.
하드웨어 가속은 Intel SSE4.2 및 ARM CRC32 명령어를 통해 사용할 수 있습니다. 이는 iSCSI, NVMe, Btrfs 및 SCTP와 같은 최신 스토리지 및 전송 프로토콜에 널리 사용됩니다.
| 다항식 | 0x1EDC6F41 (정상) / 0x82F63B78 (반영) |
| 초기값 | 0xFFFFFFFF |
| 입력 반사 | 예(RefIn = true) |
| 출력 반사 | 예(RefOut = true) |
| 최종 XOR | 0xFFFFFFFF |
| 값 확인 | 0xE3069283 ("123456789"의 경우) |
CRC-32 / MPEG-2
MPEG-2 · DVB · ATSC
ISO-HDLC와 동일한 0x04C11DB7 다항식을 사용하지만 입력이나 출력 모두 비트 반영 (MSB 우선, 빅엔디안)이 아닙니다. 초기값은 0xFFFFFFFF이고 최종 XOR은 비활성화됩니다(XorOut = 0x00000000).
주로 MPEG-2 전송 스트림(PAT, PMT, NIT 및 관련 테이블)의 PSI/SI 테이블과 DVB 및 ATSC 방송 시스템의 무결성 검사에 사용됩니다.
| 다항식 | 0x04C11DB7 |
| 초기값 | 0xFFFFFFFF |
| 입력 반사 | 아니요(RefIn = false) |
| 출력 반사 | 아니요(RefOut = false) |
| 최종 XOR | 0x00000000 (비활성화됨) |
| 값 확인 | 0x0376E6E7 ("123456789"의 경우) |
CRC-32 / BZIP2
BZip2 · AAL5 · DECT
해당 매개변수는 MPEG-2(다항식 0x04C11DB7, 반사 없음, 초기값 0xFFFFFFFF)와 거의 동일합니다. 유일한 차이점은 모든 비트를 뒤집는 0xFFFFFFFF 의 최종 XOR입니다. CRC-32/AAL5 또는 CRC-32/DECT-B라고도 합니다.
BZip2 압축 파일 형식과 ATM AAL5 프로토콜의 트레일러 체크섬 필드에서 사용됩니다.
| 다항식 | 0x04C11DB7 |
| 초기값 | 0xFFFFFFFF |
| 입력 반사 | 아니요(RefIn = false) |
| 출력 반사 | 아니요(RefOut = false) |
| 최종 XOR | 0xFFFFFFFF |
| 값 확인 | 0xFC891918 ("123456789"의 경우) |
UTF-8 텍스트
기본값 · 일반
입력을 UTF-8 문자열로 처리하고 이를 바이트로 변환한 다음 CRC32를 계산합니다. 이는 일반 텍스트, 소스 코드, JSON 및 유사한 콘텐츠에 가장 일반적인 모드입니다.
참고: GBK 또는 UTF-16과 같은 다른 문자 세트로 인코딩된 동일한 텍스트는 다른 바이트 스트림을 생성하므로 다른 CRC32 값이 생성됩니다. 이 도구는 항상 UTF-8을 사용합니다.
| 최적 | 일반 텍스트, 소스 코드, JSON, XML |
| 예 | "안녕하세요" → 48 65 6C 6C 6F (5바이트) |
| CJK 문자 | 대부분의 CJK 문자는 UTF-8에서 3바이트를 사용합니다 |
16진수
바이너리 데이터 · 프로토콜 프레임
입력을 원시 16진수 바이트 리터럴 으로 처리합니다. 공백과 줄바꿈은 무시됩니다. 2개의 16진수 문자마다 1바이트(00-FF)가 됩니다.
네트워크 프레임, 펌웨어 이미지 조각 또는 메모리 덤프와 같은 정확한 바이너리 데이터에 대한 CRC 검사가 필요할 때 유용합니다. Wireshark 또는 16진수 덤프 출력을 직접 붙여넣을 수 있습니다.
| 형식 | 0-9 및 a-f / A-F 만 허용됩니다 |
| 문자 수 | 짝수여야 합니다(바이트당 2자) |
| 예 | 48656C6C6F = "안녕하세요"(5바이트) |
| 공백 | 자동으로 무시됩니다. 48 65 6C 는 48656C |
과 동일합니다.
Base64
인코딩된 바이너리 · 인증서 · 이미지
입력을 Base64로 인코딩된 문자열 으로 처리하고 이를 원시 바이트로 디코딩한 다음 CRC32를 계산합니다. PEM 인증서, JWT 페이로드, 데이터 URI 및 기타 Base64 콘텐츠에 유용합니다.
표준 Base64 알파벳(A-Z a-z 0-9 + /)을 지원합니다. 패딩 문자 = 은 선택 사항입니다. URL 안전 Base64( - _ )는 지원되지 않습니다.
| 알파벳 | A-Z a-z 0-9 + / = |
| 예 | SGVsbG8= → "안녕하세요"(5바이트) |
| URL 안전 | 지원되지 않습니다. -→+ 및 _→/ 먼저 |
교체
| ⚠ 1자 | 유효하지 않음 — 6비트로는 1바이트를 구성하기에 충분하지 않습니다(8비트 필요) |
| 2자 | 으로 디코딩 1바이트 (최소 유효 입력) |
| 3자 | 2바이트로 디코딩 |
| 4자 | 3바이트로 디코딩 (패턴은 4자마다 반복됨) |
16진수
가장 일반적 · 기본값
0x 접두사가 붙은 8자리 대문자 16진수로 값을 표시합니다. 각 문자는 4비트를 나타내며 총 32비트입니다. 이는 대부분의 도구, 소스 코드 및 문서에 사용되는 표준 형식입니다.
10진수 출력과 비교하여 16진수는 바이트 경계를 더 쉽게 검사하고 메모리 덤프 및 프로토콜 필드를 더 자연스럽게 일치시킵니다.
| 예 | 0xCBF43926 |
| 길이 | 8개의 16진수 문자 = 32비트 |
| 베이스 | 베이스 16(0-9, A-F) |
| | 코드, 문서, Wireshark, 16진수 편집기 |
에 적합
소수
부호 없는 32비트 정수
체크섬을 0~4,294,967,295(2³²−1) 범위의 부호 없는 32비트 10진수 으로 표시합니다. 일부 언어와 도구는 CRC 값을 십진수 형식으로 비교하며 데이터베이스 필드는 종종 이 표현을 저장합니다.
참고: CRC32 결과는 부호 없는 정수로 처리되어야 합니다. Java 또는 C#과 같은 부호 있는 int 유형에서 0x7FFFFFFF 이상의 값은 음수로 나타날 수 있으므로 단위 또는 더 넓은 부호 없는 표현으로 변환해야 합니다.
| 예시 | 3421780262 |
| 범위 | 0–4,294,967,295 |
| 참고 | Java int의 경우 및 0xFFFFFFFFL |
로 변환합니다.
| | 데이터베이스, Python 구조체 값, 숫자 비교에 적합 |
바이너리
비트 수준 분석
체크섬을 0b 접두사가 붙은 32비트 이진 문자열로 표시합니다. 각 문자는 0 또는 1이며 왼쪽의 최상위 비트에 맞춰 정렬되고 필요한 경우 앞에 0이 채워집니다.
주로 내부 CRC 알고리즘 이해, 다항식 나눗셈 연구, 교육 및 비트 수준 체크섬 처리가 필요한 임베디드 시나리오에 유용합니다.
| 예 | 0b11001011…00100110 |
| 길이 | 왼쪽 제로 패딩을 사용하여 32비트로 고정 |
| 가장 높은 비트 | 비트 31(MSB)이 가장 왼쪽에 나타납니다 |
| 최적 | 알고리즘 분석, 교육, 임베디드 디버깅 |
8진수
Unix · 파일 시스템
0o 접두사가 붙은 11자리 8진수로 체크섬을 표시합니다. 3×11 = 33 > 32이므로 32비트에는 최대 11개의 8진 문자가 필요합니다. 각 8진수는 3비트를 나타냅니다.
8진수 출력은 최신 CRC 작업 흐름에서는 일반적이지 않지만 일부 Unix 도구, 내장형 펌웨어 도구 체인 및 이전 통신 프로토콜 사양에는 여전히 나타납니다.
| 예 | 0o31572031046 |
| 길이 | 최대 11자리 8진수 |
| 자릿수당 | 3비트(0-7)를 나타냄 |
| | Unix 도구, 이전 프로토콜 사양에 적합 |