2014-03-06 98 views
-1

我需要爲從文檔中提取的字符串計算CRC 128位校驗和。用於CRC 128位的Java代碼

我環顧四周,但無法找到任何僞碼或Java代碼。

那麼,任何人都可以幫助我?

感謝您的關注。

+1

這是一個有點不清楚究竟什麼你問。你正在做一個與學習/實現算法(crc128,bloom filtering)有關的教育任務嗎?或者你只是在尋找圖書館來爲你做這件事?另外,這個問題太廣泛了,要問你是否確實要求SO爲你提供用bloom濾波器構成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); 
    } 
`