"123456789"의 CRC-32
0xCBF43926 CRC-32/ISO-HDLC 기준 0xCBF43926이며, ZIP과 PNG, 이더넷, gzip이 쓰는 변형입니다.
16진수나 텍스트에서 CRC-8·CRC-16·CRC-32 변형 63개를 계산하는 온라인 도구. 맞지 않는 체크섬을 역조회 칸에 넣으면 MODBUS 등 어느 변형인지 알려 줍니다.
| 변형 | 결과 | 다항식 | 초기값 | 입력/출력 반전 | 최종 XOR |
|---|---|---|---|---|---|
| CRC-8 | |||||
| CRC-8/AUTOSAR | 0x2F | 0xFF | false / false | 0xFF | |
| CRC-8/BLUETOOTH | 0xA7 | 0x00 | true / true | 0x00 | |
| CRC-8/CDMA2000 | 0x9B | 0xFF | false / false | 0x00 | |
| CRC-8/DARC | 0x39 | 0x00 | true / true | 0x00 | |
| CRC-8/DVB-S2 | 0xD5 | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-A | 0x1D | 0x00 | false / false | 0x00 | |
| CRC-8/GSM-B | 0x49 | 0x00 | false / false | 0xFF | |
| CRC-8/HITAG | 0x1D | 0xFF | false / false | 0x00 | |
| CRC-8/I-432-1 CRC-8/ITU | 0x07 | 0x00 | false / false | 0x55 | |
| CRC-8/I-CODE | 0x1D | 0xFD | false / false | 0x00 | |
| CRC-8/LTE | 0x9B | 0x00 | false / false | 0x00 | |
| CRC-8/MAXIM-DOW CRC-8/MAXIM · DOW-CRC | 0x31 | 0x00 | true / true | 0x00 | |
| CRC-8/MIFARE-MAD | 0x1D | 0xC7 | false / false | 0x00 | |
| CRC-8/NRSC-5 | 0x31 | 0xFF | false / false | 0x00 | |
| CRC-8/OPENSAFETY | 0x2F | 0x00 | false / false | 0x00 | |
| CRC-8/ROHC | 0x07 | 0xFF | true / true | 0x00 | |
| CRC-8/SAE-J1850 CRC-8/J1850 | 0x1D | 0xFF | false / false | 0xFF | |
| CRC-8/SMBUS CRC-8 | 0x07 | 0x00 | false / false | 0x00 | |
| CRC-8/TECH-3250 CRC-8/AES · CRC-8/EBU | 0x1D | 0xFF | true / true | 0x00 | |
| CRC-8/WCDMA | 0x9B | 0x00 | true / true | 0x00 | |
| CRC-16 | |||||
| CRC-16/ARC CRC-16 · CRC-16/IBM · CRC-16/LHA | 0x8005 | 0x0000 | true / true | 0x0000 | |
| CRC-16/CDMA2000 | 0xC867 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/CMS | 0x8005 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/DDS-110 | 0x8005 | 0x800D | false / false | 0x0000 | |
| CRC-16/DECT-R R-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0001 | |
| CRC-16/DECT-X X-CRC-16 | 0x0589 | 0x0000 | false / false | 0x0000 | |
| CRC-16/DNP | 0x3D65 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/EN-13757 | 0x3D65 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/GENIBUS CRC-16/DARC · CRC-16/EPC · CRC-16/EPC-C1G2 · CRC-16/I-CODE | 0x1021 | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/GSM | 0x1021 | 0x0000 | false / false | 0xFFFF | |
| CRC-16/IBM-3740 CRC-16/CCITT-FALSE · CRC-16/AUTOSAR | 0x1021 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/IBM-SDLC CRC-16/X-25 · CRC-16/X25 · CRC-16/ISO-HDLC · CRC-B · X-25 | 0x1021 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/ISO-IEC-14443-3-A CRC-A | 0x1021 | 0xC6C6 | true / true | 0x0000 | |
| CRC-16/KERMIT CRC-16/CCITT · CRC-16/CCITT-TRUE · CRC-16/V-41-LSB · CRC-CCITT | 0x1021 | 0x0000 | true / true | 0x0000 | |
| CRC-16/LJ1200 | 0x6F63 | 0x0000 | false / false | 0x0000 | |
| CRC-16/M17 | 0x5935 | 0xFFFF | false / false | 0x0000 | |
| CRC-16/MAXIM-DOW CRC-16/MAXIM | 0x8005 | 0x0000 | true / true | 0xFFFF | |
| CRC-16/MCRF4XX | 0x1021 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/MODBUS | 0x8005 | 0xFFFF | true / true | 0x0000 | |
| CRC-16/NRSC-5 | 0x080B | 0xFFFF | true / true | 0x0000 | |
| CRC-16/OPENSAFETY-A | 0x5935 | 0x0000 | false / false | 0x0000 | |
| CRC-16/OPENSAFETY-B | 0x755B | 0x0000 | false / false | 0x0000 | |
| CRC-16/PROFIBUS CRC-16/IEC-61158-2 | 0x1DCF | 0xFFFF | false / false | 0xFFFF | |
| CRC-16/RIELLO | 0x1021 | 0xB2AA | true / true | 0x0000 | |
| CRC-16/SPI-FUJITSU CRC-16/AUG-CCITT | 0x1021 | 0x1D0F | false / false | 0x0000 | |
| CRC-16/T10-DIF | 0x8BB7 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TELEDISK | 0xA097 | 0x0000 | false / false | 0x0000 | |
| CRC-16/TMS37157 | 0x1021 | 0x89EC | true / true | 0x0000 | |
| CRC-16/UMTS CRC-16/BUYPASS · CRC-16/VERIFONE | 0x8005 | 0x0000 | false / false | 0x0000 | |
| CRC-16/USB | 0x8005 | 0xFFFF | true / true | 0xFFFF | |
| CRC-16/XMODEM CRC-16/ACORN · CRC-16/LTE · CRC-16/V-41-MSB · ZMODEM | 0x1021 | 0x0000 | false / false | 0x0000 | |
| CRC-32 | |||||
| CRC-32/AIXM CRC-32Q | 0x814141AB | 0x00000000 | false / false | 0x00000000 | |
| CRC-32/AUTOSAR | 0xF4ACFB13 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BASE91-D CRC-32D | 0xA833982B | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/BZIP2 CRC-32/AAL5 · CRC-32/DECT-B · B-CRC-32 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0xFFFFFFFF | |
| CRC-32/CD-ROM-EDC | 0x8001801B | 0x00000000 | true / true | 0x00000000 | |
| CRC-32/CKSUM CRC-32/POSIX | 0x04C11DB7 | 0x00000000 | false / false | 0xFFFFFFFF | |
| CRC-32/ISCSI CRC-32C · CRC-32/BASE91-C · CRC-32/CASTAGNOLI · CRC-32/INTERLAKEN | 0x1EDC6F41 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/ISO-HDLC CRC-32 · CRC-32/ADCCP · CRC-32/V-42 · CRC-32/XZ · PKZIP | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0xFFFFFFFF | |
| CRC-32/JAMCRC | 0x04C11DB7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MEF | 0x741B8CD7 | 0xFFFFFFFF | true / true | 0x00000000 | |
| CRC-32/MPEG-2 | 0x04C11DB7 | 0xFFFFFFFF | false / false | 0x00000000 | |
| CRC-32/XFER | 0x000000AF | 0x00000000 | false / false | 0x00000000 | |
장비 문서의 다항식이 위 표에 없을 때 사용하십시오.
Go Tools 엔지니어링 팀이 제작하고 검증했습니다.
0xCBF43926 CRC-32/ISO-HDLC 기준 0xCBF43926이며, ZIP과 PNG, 이더넷, gzip이 쓰는 변형입니다.
0x4B37 0x4B37입니다. poly 0x8005, init 0xFFFF, 입력과 출력 모두 반전, 최종 XOR 없음.
0x29B1 0x29B1입니다. 카탈로그의 정식 명칭은 CRC-16/IBM-3740이며 poly 0x1021, init 0xFFFF, 반전 없음입니다.
63 이 계산기는 카탈로그에 수록된 63개 변형을 다룹니다. 폭 8이 20개, 폭 16이 31개, 폭 32가 12개입니다.
순환 중복 검사는 데이터 블록을 아주 긴 이진 다항식의 계수로 보고, 모듈로 2 연산으로 고정된 생성 다항식으로 나눈 다음 나머지를 남깁니다. 그 나머지가 체크섬입니다. 이 방식이 널리 쓰이는 이유는 두 가지입니다. 나눗셈이 시프트와 XOR로 환원되어 하드웨어에서 비용이 거의 들지 않고, 대수가 통계적 기대가 아니라 확정적인 보장을 주기 때문입니다. 잘 고른 16비트 다항식은 모든 단일 비트 오류, 쓸 만한 블록 길이 안의 모든 이중 비트 오류, 홀수 개의 모든 비트 반전, 그리고 연속된 16비트 이하의 모든 버스트 오류를 검출합니다.
실무에서 CRC를 혼란스럽게 하는 것은 다항식이 여섯 개 파라미터 중 하나일 뿐이라는 사실입니다. 두 구현이 다항식에서 완전히 일치하고도 결과가 하나도 맞지 않을 수 있습니다. 레지스터의 초기값이 다르고, 입력 바이트와 출력 레지스터의 비트 순서를 뒤집는지가 다르며, 마지막에 XOR로 넣는 상수가 다르기 때문입니다. CRC 변형이란 다항식 하나가 아니라 이 파라미터 집합 전체를 가리킵니다. 'CRC-16' 같은 이름이 홀로 떨어지면 사실상 아무것도 지목하지 못하는 이유이자, 이 페이지가 결과마다 다항식과 초기값, 두 개의 반전 플래그, 최종 XOR를 나란히 보여 주고 비트 폭을 그룹 제목으로 삼는 이유입니다.
표가 보여 주지 못하는 단서가 하나 있습니다. 16비트 다항식이 홀수 개의 비트 반전을 모두 검출하는 것은 x+1이 그 다항식을 나누어떨어뜨릴 때뿐입니다. 가장 마주치기 쉬운 두 가지인 0x1021과 0x8005는 이 조건을 만족하지만 모든 다항식이 그런 것은 아닙니다. CRC-16/T10-DIF와 CRC-16/PROFIBUS가 그 예외에 속합니다.
// CRC-16/MODBUS: poly=0x8005, init=0xFFFF, refin/refout=true, xorout=0x0000
// Written in the reflected form, so the polynomial appears bit-reversed as 0xA001.
function crc16Modbus(bytes) {
let crc = 0xffff;
for (const byte of bytes) {
crc ^= byte;
for (let i = 0; i < 8; i++) {
crc = crc & 1 ? (crc >>> 1) ^ 0xa001 : crc >>> 1;
}
}
return crc;
}
crc16Modbus([0x01, 0x03, 0x00, 0x00, 0x00, 0x0a]); // 0xCDC5
// On the wire Modbus RTU sends the low byte first: ... 0x0A 0xC5 0xCD CRC-8과 CRC-16, CRC-32가 입력과 동시에 함께 다시 계산됩니다. 무언가를 보려고 드롭다운에서 먼저 하나를 찍어 볼 필요가 없습니다.
받은 체크섬을 입력하면 그 값을 산출하는 변형이 강조되므로, 알 수 없는 알고리즘을 알아내는 데 스무 번이 아니라 한 번이면 됩니다.
모든 행에 RevEng 카탈로그 명칭과 현장에서 실제로 쓰이는 별칭을 함께 적었습니다. CCITT-FALSE, CRC-16/IBM, CRC-32C, X-25 등입니다.
다항식과 초기값, 두 반전 플래그, 최종 XOR가 결과 옆에 함께 놓이므로 사양서와 대조해 일치를 확인할 수 있습니다.
어떤 카탈로그에도 오르지 못한 다항식을 위해 폭과 다항식, 초기값, 반전, 최종 XOR를 모두 직접 수정할 수 있습니다.
계산은 브라우저 안에서 일어납니다. 운영 프레임과 펌웨어 이미지는 이 기기를 벗어나지 않습니다.
123456789
CRC-32/ISO-HDLC = 0xCBF43926, CRC-16/MODBUS = 0x4B37, CRC-8/SMBUS = 0xF4
RevEng 카탈로그에 수록된 모든 CRC 변형은 ASCII 문자열 123456789에 대한 결과를 함께 공개합니다. 그래서 이 입력이 표준 자체 검증 값이 됩니다. 어떤 라이브러리가 여기 표와 다른 값을 내놓는다면 틀린 쪽은 라이브러리입니다.
01 03 00 00 00 0A
CRC-16/MODBUS = 0xCDC5
1번 슬레이브에서 보유 레지스터를 읽는 요청입니다. Modbus RTU는 CRC의 하위 바이트를 먼저 붙이므로 이 프레임은 회선에 01 03 00 00 00 0A C5 CD로 실려 나갑니다. 체크섬이 맞지 않는다는 사례의 상당수가 바로 이 순서 뒤바뀜에서 나옵니다.
DEADBEEF
MODBUS = 0xC19B, CCITT-FALSE = 0x4097, XMODEM = 0xC457, KERMIT = 0x1915
16진수 모드로 읽으므로 문자열의 여덟 글자가 아니라 4바이트입니다. 가장 잘 알려진 CRC-16 변형 네 개가 이 4바이트에 대해 완전히 다른 값을 내놓습니다. 고장이 난 것이 아닙니다. 이들은 초기값과 반전, 최종 XOR가 다를 뿐이며 정확성의 문제가 아닙니다.
123456789, 기댓값 0x29B1
CRC-16/IBM-3740 (설명서에는 CRC-16/CCITT-FALSE로 적혀 있을 수 있습니다)
이 계산기가 겨냥하는 상황이 바로 이것입니다. 데이터와 다른 사람이 계산한 체크섬은 손에 있는데 변형 이름만 모르는 경우, 그 값을 재현하는 파라미터 집합을 거꾸로 찾는 것입니다.
프로토콜 프레임은 거의 언제나 16진수입니다. 123456789 같은 자체 검증 값처럼 문자열 그 자체의 체크섬을 구할 때만 텍스트 모드를 쓰십시오.
16진수 모드에서는 구분 기호를 무시하므로 01 03 00 00 00 0A, 0x01 0x03, 010300 00000A가 모두 인식됩니다.
표는 폭 기준으로 묶여 있습니다. 정식 명칭은 RevEng 카탈로그에서 가져왔고, 그 아래에 장비 설명서에 실릴 가능성이 높은 별칭을 함께 적었습니다.
이미 체크섬이 있고 어떤 변형인지 알고 싶다면 기댓값 칸에 입력한 뒤 강조된 행을 읽으십시오.
텍스트 모드에 그대로 두면 계산기는 16진수 덤프가 나타내는 바이트가 아니라 그 문자열의 ASCII 문자를 계산합니다. 16진수 모드로 전환하십시오. 모드 전환 아래의 바이트 수가 지금 어느 쪽으로 읽혔는지 알려 줍니다.
Text mode, input "01 03" -> 5 bytes: 30 31 20 30 33
Hex mode, input "01 03" -> 2 bytes: 01 03
Modbus RTU는 CRC의 하위 바이트를 먼저 전송합니다. C5 CD로 끝나는 프레임의 체크섬은 0xC5CD가 아니라 0xCDC5입니다.
expected 0xC5CD (bytes read in transmission order)
expected 0xCDC5 (bytes reassembled low-byte-first)
CRC는 자기 앞의 바이트를 덮습니다. 꼬리까지 포함해 프레임 전체를 다시 넣으면 체크섬이 아니라 잔여값이 나옵니다.
01 03 00 00 00 0A C5 CD <- trailer included
01 03 00 00 00 0A <- payload only
카탈로그에 수록된 16비트 폭 변형은 31개입니다. 나머지 다섯 개 파라미터가 없으면 이 이름은 아무것도 좁혀 주지 못합니다.
spec says: "trailer is a CRC-16"
spec says: "CRC-16/MODBUS, poly 0x8005, init 0xFFFF, refin/refout true"
보안 도구
온라인 AES 복호화 — GCM/CBC/CTR, 암호 문구 또는 원시 키, OpenSSL·CryptoJS "U2FsdGVkX1" 형식 자동 인식. 브라우저에서만 실행되며 키는 유출되지 않습니다.
보안 도구
무료 온라인 AES 암호화 도구 — AES-128/192/256, GCM/CBC/CTR, 암호 문구(PBKDF2) 또는 원시 키. 브라우저에서만 실행되고 서버 업로드는 없습니다.
보안 도구
온라인으로 bcrypt 비밀번호 해시를 생성·검증하세요 — 조절 가능한 비용 인자, $2b$/$2a$/$2y$ 접두사 지원. 100% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.
보안 도구
무료 온라인 HMAC 생성·검증 도구. Text/Hex/Base64 키로 HMAC-SHA256/SHA1/SHA384/SHA512를 Hex/Base64/Base64URL로 출력. 100% 브라우저 실행, 키 유출 없음.
보안 도구
무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.
보안 도구
무료 온라인 JWT 생성기·인코더. 헤더와 페이로드를 구성하고 HS256, RS256, ES256으로 즉시 서명. 100% 브라우저 기반 — 비밀 키와 개인 키가 기기를 떠나지 않음.