Java语言实现CRC32校验

原创 2016年06月01日 23:55:07

源代码:

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


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java查表法实现CRC32校验算法

Java查表法实现CRC32校验,生产环境验证无问题。
  • zxfrdas
  • zxfrdas
  • 2016年04月10日 00:14
  • 1305

Java 实现CRC32校验和MD5

现在发现Java中也有现成的函数可以调用,详细代码如下: CRC32 crc32 = new CRC32(); crc32.update("abc".getBytes()); System.out....
  • lichao_ustc
  • lichao_ustc
  • 2014年06月13日 09:31
  • 3681

CRC32校验的简单理解

数据结构算法:CRC32算法实现原理  简而言之,CRC是一个数值。该数值被用于校验数据的正确性。CRC数值简单地说就是通过让你需要做处理的数据除以一个常数而得到的余数。当你得到这个数值后你可以将这...
  • jk007
  • jk007
  • 2014年06月10日 15:45
  • 1958

crc32校验的c语言实现

最近在做软件升级,需要对升级文件进行crc校验,就学习了crc的实现原理 crc就是一个数值,该数值用于检验数据的正确性,crc校验的原理就是将需要作校验的数据与一个数据模2相除,得到的余数即为...
  • lickylin
  • lickylin
  • 2012年08月12日 18:34
  • 20539

CRC32校验C实现

#include #include #include /*static*/ unsigned long Crc32_ComputeBuf( unsigned long inCrc3...
  • weiweiliulu
  • weiweiliulu
  • 2016年05月06日 14:30
  • 792

CRC32算法c#

 最近项目中,要用到crc32算法,项目组数据层技术员给了一个perl程序里面的crc32算法版本(c语言的),自己修改后,改成c#版本的了。c版本的:#include unsigned int cr...
  • yangang0201
  • yangang0201
  • 2007年07月07日 17:17
  • 6437

CRC32校验算法C语言版(查表法)

最近用到CRC校验算法,就找了些资料,学习了一下,网上关于CRC32的资料也多,但感觉不是很完整,或者太高深。 CRC算法查表法很常见,但表是怎么来的,有些资料说得不很清楚。 我来说一下我的看法: 1...
  • qq446252221
  • qq446252221
  • 2016年05月16日 17:20
  • 6161

CRC32校验原理及实现

CRC即循环冗余校验(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验实用程序库:在数据存储和数据通...
  • liudewen3
  • liudewen3
  • 2014年01月06日 19:43
  • 8044

用python实现crc32求字符串校验码

用python自带的binascii模块计算字符串的校验码,出来的是负值,与用c写的程序得出的校验码不一样,所以就研究了一下。发现别人用的python3.0版本binascii模块计算出的crc32校...
  • wyingquan
  • wyingquan
  • 2008年12月20日 00:35
  • 18958

CRC32之JAVA实现

CRC32之JAVA实现
  • u010640524
  • u010640524
  • 2015年08月31日 15:37
  • 1399
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java语言实现CRC32校验
举报原因:
原因补充:

(最多只允许输入30个字)