2014-03-06 4 views
-1

문서에서 추출한 문자열에 대한 CRC 128 비트 체크섬을 계산해야합니다.CRC 용 자바 코드 128 비트

나는 인터넷에서 주위를 둘러보고 있지만 의사 코드 또는 Java 코드를 찾을 수 없습니다.

누구든지 나를 도울 수 있습니까?

감사합니다.

+1

그것은 정확하게 당신이 요구하는지 조금 불분명는 수익 발생한다. 학습/알고리즘 구현 (crc128, 블룸 필터링)과 관련이있는 교육 과제를 수행하고 있습니까, 아니면 이것을 위해 라이브러리를 찾고 있습니까? 또한 블룸 필터를 사용하여 crc 계산의 구성 코드를 제공하도록 실제로 요청하는지 묻는 질문이 너무 광범위합니다. 그러나 각각에 대한 질문을하고 도서관이나 알고리즘 이론을 구하는 것이 더 구체적 일 수 있습니다. – plc

+0

나는 내 논문을 연구 중이다. crc128을 구현하는 코드가 필요합니다. –

+0

그럼 분명히 그 질문을 편집하여 다음과 같은 사실을 반영해야한다고 생각합니다. 사실 저는 당신에게 유용한 것을 발견했을 것입니다. – plc

답변

0

의사 코드를 도시한다 .. 그러나, 여기에서의 CRC의 checksuming위한 니펫 문자열 ... 너비를 변경하면 8 비트, 16 비트, 32 비트, 64 비트 등이 변경됩니다. 전체 크기가 필요할 경우 반환 유형도 변경해야합니다. 8 * 16

즉 설정 폭은 가장 하단 64 비트 `

static int WIDTH = (8 * 16);// change this to 8*4 for int, and 8 * 2 for 16 bits 
static int TOPBIT = (1 << (WIDTH - 1)); 
static int POLYNOMIAL = 0xD8; /* 11011 followed by 0's */ 
static long CRCFunc(final String msg) 
    { 
     final byte message[] = msg.getBytes(); 
     int nBytes = message.length; 
     if(nBytes<1) return 0; 
     long rem = 0; 
     int b; 
     for(b=0;b<nBytes;++b) 
     { 
      rem ^= (message[b] << (WIDTH - 8)); 
      byte bit; 
      for(bit=8;bit>0;--bit) 
      { 
       if ((rem & TOPBIT)>0) 
       { 
        rem = (rem<< 1)^POLYNOMIAL; 
       } 
       else 
       { 
        rem = (rem << 1); 
       } 
      } 
     } 
     return (rem); 
    } 
`