CRC-32C 해시 코드 계산기
게시됨: 2025년 2월 17일 오후 6시 44분 53초 UTC
마지막으로 업데이트되었습니다: 2026년 1월 12일 오전 11시 37분 25초 UTC
CRC-32C Hash Code Calculator
순환 중복 검사(CRC)는 원시 데이터의 우발적인 변경을 감지하는 데 일반적으로 사용되는 오류 검출 코드입니다. 엄밀히 말하면 암호화 해시 함수는 아니지만, CRC-32는 가변 길이 입력에서 고정 크기(32비트)의 출력을 생성할 수 있기 때문에 종종 해시 함수로 불립니다. 이 페이지에서 소개하는 버전은 CRC-32C 변형으로, 최신 CPU에서 하드웨어 가속(SSE 4.2를 통해)을 지원하는 "더 스마트한"(더 나은 오류 검출) 버전입니다.
전체 공개: 이 페이지에서 사용된 해시 함수의 구체적인 구현은 제가 직접 작성하지 않았습니다. PHP 프로그래밍 언어에 포함된 표준 함수입니다. 편의를 위해 웹 인터페이스만 공개하여 여기에서 사용할 수 있도록 만들었습니다.
CRC-32C 해시 알고리즘에 대하여
저는 수학자는 아니지만, 간단한 비유를 통해 이 해시 함수를 설명해 보겠습니다. 다른 암호화 해시 함수들과는 달리, 이 알고리즘은 그다지 복잡하지 않으니 아마 이해하실 수 있을 겁니다 ;-)
우편으로 편지를 보내는데, 수신자에게 도착하기 전에 손상될까 봐 걱정된다고 상상해 보세요. 편지 내용을 바탕으로 CRC-32 체크섬을 계산해서 봉투에 적어둡니다. 수신자가 편지를 받으면, 본인도 체크섬을 계산해서 봉투에 적어둔 내용과 일치하는지 확인할 수 있습니다. 일치한다면, 편지는 배송 중에 손상되거나 변조되지 않은 것입니다.
CRC-32는 다음 네 단계 과정을 통해 이를 수행합니다.
1단계: 여유 공간(패딩) 추가
- CRC는 메시지 끝부분에 약간의 여유 공간을 추가합니다(상자 안의 스티로폼 완충재처럼).
- 이렇게 하면 오류를 더 쉽게 발견할 수 있습니다.
2단계: 마법의 자(다항식)
- CRC-32는 특수한 "마법의 자"를 사용하여 데이터를 측정합니다. 이 자는 마치 요철과 홈으로 이루어진 패턴과 같습니다(이것이 다항식이지만, 이 용어는 신경 쓰지 않아도 됩니다). CRC-32에 가장 일반적으로 사용되는 "자"는 고정된 패턴입니다.
3단계: 자를 움직여 나누기
- 이제 CRC는 자를 메시지 위로 움직입니다. 각 지점에서 자는 돌기와 홈이 일치하는지 확인합니다. 일치하지 않으면 CRC는 이를 기록합니다(이는 스위치를 켜거나 끄는 것과 같은 간단한 XOR 연산을 통해 이루어집니다). 자는 끝까지 도달할 때까지 계속해서 움직이고 스위치를 조작합니다.
4단계: 최종 결과 (체크섬)
- 메시지 전체에 걸쳐 자를 움직이면 원래 데이터를 나타내는 작은 숫자(32비트 길이)가 남습니다. 이 숫자는 메시지의 고유한 지문과 같습니다. 이것이 CRC-32 체크섬입니다.
이 페이지에 제시된 버전은 CRC-32C 변형이며, 특히 하드웨어 가속(SSE 4.2 이상)을 지원하는 CPU를 사용하고 다른 변형과의 호환성이 필요하지 않은 경우 이 버전을 사용하는 것이 좋습니다.
다른 변형에 대한 계산기도 있습니다.
- 링크
- 링크
추가 자료
이 글이 마음에 드셨다면 다음 제안도 마음에 드실 겁니다.
