我正在尝试为邮件实现校验和。规范是:
但是,恐怕我不知道如何用Java做到这一点。我非常感谢任何建议。实现校验和 整个消息包装器和 消息数据,不包括校验和, 是一个简单的二进制的结果 加法截断为四个字节。
微米。
答案 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