我需要为从文档中提取的字符串计算CRC 128位校验和。
我在互联网上环顾四周,但无法找到任何伪代码或java代码。
所以任何人都可以帮助我?
感谢您的关注。
答案 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);
}
`