-1

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

我在互联网上四处寻找,但找不到任何伪代码或 java 代码。

所以有人可以帮助我吗?

感谢您的关注。

4

2 回答 2

0

关于计算CRC校验和的维基百科文章包含对CRC算法的解释并显示伪代码

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

于 2014-03-06T16:09:25.210 回答
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);
    }
`
于 2015-12-15T22:46:46.907 回答