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>


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

相关文章推荐

如何使用TensorFlow进行深度学习

看了挺久的例子始终对TensorFlow的深度学习机制不甚明了,因此特地写一下其使用流程吧,如有不对请纠正。 1、准备数据 深度学习当中一般有train,validation,test三种数据集,前面...
  • Dod_Jdi
  • Dod_Jdi
  • 2017年10月30日 12:36
  • 157

采用CRC查表法快速生成CRC的函数

//CRC查表法//索引CRC的方式比对报文缓存区的每个新字符都计算新的CRC值得方法更快捷。//声明两个参数//unsigned char *puchMsg; //含有生成CRC所使用的二进制数据的...

CRC原理及其C语言、Java语言实现

1.CRC简介 CRC(cyclical redundancy check) 循环冗余校验,在《计算机组成原理》里面有这个知识点。类似的校验有奇偶校验。   可以简单的理解成在发送数...
  • zp1318
  • zp1318
  • 2016年06月02日 00:24
  • 461

循环冗余校验 CRC32 的 C 语言实现

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

Java 实现CRC32校验和MD5

现在发现Java中也有现成的函数可以调用,详细代码如下: CRC32 crc32 = new CRC32(); crc32.update("abc".getBytes()); System.out....

java 实现CRC32校验

原文链接:http://blog.csdn.net/liuzhengkang/article/details/3116544 实现了CRC32校验,本来java那边是很简单的,直接用  java.u...

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

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

C语言 CRC32校验算法

#include #include #include typedef signed char s8; typedef unsigned char u8; typedef signed sho...

C语言 一个crc32校验算法

#include static const uint32_t crc32tab[] = { 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, ...

数据结构与算法分析(Java语言描述)(32)—— 使用 Kruskal 算法求有权图的最小生成树

将图中的所有边存到最小堆中当最小堆非空 取出权重最小的边 如果此边的两个端点是连接的 跳出本次循环 将此边加入 mst 中 在并查集中 union 此边...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java语言实现CRC32校验
举报原因:
原因补充:

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