Java语言实现CRC32校验

源代码:

<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>


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zp1318/article/details/51560160
个人分类: Java代码集
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭