"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진수 모드로 전환하십시오. 모드 전환 아래의 바이트 수가 지금 어느 쪽으로 읽혔는지 알려 줍니다. 어떤 텍스트가 실제로 어떤 바이트인지 보려면 먼저 텍스트 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% 브라우저에서 실행, 비밀번호는 업로드되지 않습니다.
보안 도구
브라우저에서 DES·3DES(2/3키)·ECB/CBC·PKCS#7 암호화·복호화. 키 길이(8/16/24바이트)를 엄격 검증하고 동등한 OpenSSL 명령을 제공합니다. 업로드 없음.
보안 도구
무료 온라인 HMAC 생성·검증 도구. Text/Hex/Base64 키로 HMAC-SHA256/SHA1/SHA384/SHA512를 Hex/Base64/Base64URL로 출력. 100% 브라우저 실행, 키 유출 없음.
보안 도구
무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입 불필요.