Java中的二进制加法校验和

时间:2011-01-27 12:36:08

标签: java checksum

我正在尝试为邮件实现校验和。规范是:

  

实现校验和   整个消息包装器和   消息数据,不包括校验和,   是一个简单的二进制的结果   加法截断为四个字节。

但是,恐怕我不知道如何用Java做到这一点。我非常感谢任何建议。

微米。

2 个答案:

答案 0 :(得分:4)

它们可能意味着所有字节的简单无符号加法(假设8位字节是您与之交互的最小单位):

byte[] data = getTheDataFromSomewhere();
long checksum = 0;
for (int i = 0; i < data.length; i++) {
  checksum += (data[i] & 0xFF);
}
checksum = checksum & 0xFFFFFFFFL; // truncate to 4 byte

您也可以在那里使用int,但这会导致负数。按位,它是等价的,但这样比较值更容易。

答案 1 :(得分:0)

如果需要,可以使用java标准库函数。 http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/CRC32.html