CRC代码为CRC 128位

时间:2014-03-06 09:16:45

标签: java checksum crc 128-bit

我需要为从文档中提取的字符串计算CRC 128位校验和。

我在互联网上环顾四周,但无法找到任何伪代码或java代码。

所以任何人都可以帮助我?

感谢您的关注。

2 个答案:

答案 0 :(得分:0)

关于crc-checksums计算的维基百科文章包含对crc算法的解释并显示伪代码

http://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks

答案 1 :(得分:0)

这是完全未经测试的...但是,这里有CRC校验字符串的片段...更改宽度将改变它是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);
    }
`