2014-12-25 3 views
0

나는 그것이 끝나는 부분에 추가 된 CRC가있는 데이터에 오류가 있는지 확인하기 위해 동일한 CRC 알고리즘을 실행하고 새로 계산 된 CRC가 0인지 확인해야합니다.CRC로 보호 된 데이터의 오류를 감지하는 방법은 무엇입니까?

이 다음과 같은 방법에 online CRC calculator를 사용하지만 내가가는 시도했다 :

이 이 이 (0x라는 부분 제외) 0xAABBDD에 대한 계산 CRC
    1. - CRC16 출력은 0x8992이 0xAABBDD8992에 대한
    2. 계산 CRC - CRC16가 0xFB4A를 출력 , 아니 0x0000

    내가 뭘 잘못하고 있니?

  • +2

    잘못된 - 동일한 데이터에 대해 CRC를 계산하고 이전에 계산 된 결과와 비교해야합니다. 이렇게하면 데이터가 변경되었는지 여부를 감지 할 수 있습니다. 원본 및 새 체크섬을 XOR 할 수 있습니다. 데이터가 올바르게 전송 된 경우에는 0이됩니다. – kestasx

    답변

    1

    CRC를 추가하는 것은 사전 및 사후 조건 설정없이 "순수한"CRC에만 작동합니다. 그러나 대부분의 실제 CRC에는 사전 및 사후 조건이 있으며, 주로 0의 문자열 CRC가 0이 아닙니다.

    CRC를 검사하는 방법은 다른 검사 값과 동일합니다. 메시지가 m c인데 여기서 m은 메시지 바이트이고 c은 검사 값입니다. 다른 채널 (대부분 표준 문서)을 통해 c=f(m)이라는 메시지가 표시되고 기능에 대한 설명이 f입니다. m c의 무결성을 검사하려면 f(m)을 계산하고 그 값이 c인지 확인하십시오. 그렇지 않으면 메시지 및/또는 검사 값이 전송 중 손상되었습니다. 동등한 경우 메시지가 손상되지 않았 음을 어느 정도 확신 할 수 있습니다. 보증은 f의 특성, 비트 수인 c 및 전송 채널에서 발생할 수있는 오류의 특성에 따라 달라집니다.

    관련 문제