CRC 128位的Java代码

CRC 128位的Java代码,java,checksum,crc,128-bit,Java,Checksum,Crc,128 Bit,我需要为从文档中提取的字符串计算CRC 128位校验和 我在互联网上四处寻找,但找不到任何伪代码或java代码 有人能帮我吗 感谢您的关注。维基百科关于crc校验和计算的文章包含了对crc算法的解释,并显示了伪代码 这完全没有经过测试。。。然而,这里有一个字符串CRC校验的片段。。。更改宽度将改变它是否为8位、16位、32位、64位等。如果需要更改全尺寸,还需要更改返回类型 Ie将width设置为8*16时,应返回最底部的64位 ` static int WIDTH=(8*16);//对于int

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

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

有人能帮我吗


感谢您的关注。

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


这完全没有经过测试。。。然而,这里有一个字符串CRC校验的片段。。。更改宽度将改变它是否为8位、16位、32位、64位等。如果需要更改全尺寸,还需要更改返回类型

Ie将width设置为8*16时,应返回最底部的64位 `

static int WIDTH=(8*16);//对于int,将其更改为8*4,对于16位,将其更改为8*2

静态int TOPBIT=(1有点不清楚您到底在问什么。您是否正在做与学习/实现算法有关的教育作业(crc128,bloom filtering)或者你只是在寻找库来为你做这件事?而且,如果你真的这样问是为了给你提供crc计算与bloom过滤器组合的代码,这个问题太宽泛了。但是你可以问每个问题,更具体地说,你是在寻找库还是算法理论。我正在研究我的论文。我需要实现crc128的代码。然后我肯定认为你应该编辑这个问题来反映:-)我实际上可能已经找到了一些对你有用的东西。谢谢你的帮助:)但是截至今天,维基百科的文章没有提到crc128。它在几个64位CRC处停止。当然,0xD8不能是此算法的多项式,因为它应该设置底部位。也许,它应该被镜像。因为它是对称的,所以它的镜像将具有相同的位模式:0x1B。0xD8可能是“右移算法”的多项式:“``若((rem&1)!=0){rem=(rem>>1)^(0xD8>1);}``问题是关于128位多项式,而不是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);
    }
`