我需要为从文档中提取的字符串计算 CRC 128 位校验和。
我在互联网上四处寻找,但找不到任何伪代码或 java 代码。
所以有人可以帮助我吗?
感谢您的关注。
关于计算CRC校验和的维基百科文章包含对CRC算法的解释并显示伪代码
http://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks
这是完全未经测试的......但是,这是一个字符串的 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);
}
`