CRC: 두 판 사이의 차이
보이기
CRC |
잔글편집 요약 없음 |
||
| (같은 사용자의 중간 판 하나는 보이지 않습니다) | |||
| 1번째 줄: | 1번째 줄: | ||
[[분류:IT]] | [[분류:IT]] | ||
CRC(Cyclic Redundancy Check, 순환 중복 검사)는 데이터가 손상되었는지 | CRC(Cyclic Redundancy Check, 순환 중복 검사)는 데이터가 손상되었는지 확인할 수 있는 오류 검증 코드다. | ||
16비트, 32비트, 64비트 버전이 | 16비트, 32비트, 64비트 버전이 많이 쓰이며, 그 중 32비트 버전(CRC32)이 압도적으로 많이 쓰인다. 오죽하면 AMD64 등 21세기의 왠만한 현대 CPU들은 CRC32 연산을 가속할 수 있는 장치를 내장할 정도다. | ||
애석하게도 이걸로 데이터를 정정하거나 데이터의 무결성을 완전히 검증할 수는 없는데, 아래 나오듯 나눗셈의 몫과 나머지를 이용하는 특성 상 같은 나머지를 가지는 서로 다른 데이터를 여러 개 만들 수 있기 때문이다. 이것은 정정 기능을 지닌 다른 [[ECC]] 알고리즘을 사용해야 한다. | |||
== 검증 과정 == | == 검증 과정 == | ||
2025년 5월 5일 (월) 01:09 기준 최신판
CRC(Cyclic Redundancy Check, 순환 중복 검사)는 데이터가 손상되었는지 확인할 수 있는 오류 검증 코드다.
16비트, 32비트, 64비트 버전이 많이 쓰이며, 그 중 32비트 버전(CRC32)이 압도적으로 많이 쓰인다. 오죽하면 AMD64 등 21세기의 왠만한 현대 CPU들은 CRC32 연산을 가속할 수 있는 장치를 내장할 정도다.
애석하게도 이걸로 데이터를 정정하거나 데이터의 무결성을 완전히 검증할 수는 없는데, 아래 나오듯 나눗셈의 몫과 나머지를 이용하는 특성 상 같은 나머지를 가지는 서로 다른 데이터를 여러 개 만들 수 있기 때문이다. 이것은 정정 기능을 지닌 다른 ECC 알고리즘을 사용해야 한다.
- 송신자와 수신자는 같은 생성 다항식(Generator Polynomials)을 공유한다. 이 다항식은 이진수의 자릿수 단위로 항이 있는 다항식이다.
- 송신자는 데이터를 생성 다항식으로 나눈 체크섬을 데이터 뒤에 추가한다.
- 수신자가 체크섬이 부착된 데이터를 정상적으로 받았다면 받은 데이터를 공유한 생성 다항식으로 나누면 0으로 나누어 떨어진다. 수신자가 다항식으로 나누어 0이 아닌 경우 오류가 발생했다는 점에 주의한다.