Java语言实现CRC32校验

来源:互联网 发布:17年10美国非农数据 编辑:程序博客网 时间:2024/05/22 13:57

源代码:

<span style="font-size:14px;">package crcNew;public class CRC32 {private int crc;private String mx;public CRC32(String mx) {crc = 0x00000000;this.mx = mx;getCrc();}private void crc(byte data) {int point = 0b10000000;while (point > 0) {if ((((data & point) == point) ^ ((crc & 0x80000000) == 0x80000000))) {crc = (crc << 1) ^ 0x04c11d87;} else {crc <<= 1;}point >>= 1;}}private void getCrc() {byte[] bytes = mx.getBytes();for (int i = 0; i < bytes.length; i++) {crc(bytes[i]);}}public String getCRC() {return Integer.toHexString(crc);}}</span>

测试代码:


package crcNew;public class TestCRC32 {public static void main(String[] args) {CRC32 c = new CRC32("12");System.out.println(c.getCRC());}}

结果:


注意:由于传输顺序不同结果会不同,应区别是从低位到高位校验还是从高位到低位校验


也可直接调用Java内置CRC32对象,可直接得出校验值,该方法与rar压缩软件的校验值一致:

<span style="font-size:14px;">package crcNew;import java.util.zip.CRC32;public class CheckCRC {public static void main(String[] args) {java.util.zip.CRC32 crc = new CRC32();crc.update("12".getBytes());System.out.println(Long.toHexString(crc.getValue()));}}</span>


0 0