public class CRC
{
static public int[] Table = new int[256];
static
{
for (int i = 0; i < 256; i++)
{
int r = i;
for (int j = 0; j < 8; j++)
if ((r & 1) != 0)
r = (r >>> 1) ^ 0xEDB88320;
else
r >>>= 1;
Table[i] = r;
}
}
int _value = -1;
public void Init()
{
_value = -1;
}
public void Update(byte[] data, int offset, int size)
{
for (int i = 0; i < size; i++)
_value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8);
}
public void Update(byte[] data)
{
int size = data.length;
for (int i = 0; i < size; i++)
_value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8);
}
public void UpdateByte(int b)
{
_value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8);
}
public int GetDigest()
{
return _value ^ (-1);
}
}
分享到:
相关推荐
本工具支持常用的所有CRC校验 比如: CRC-4/TU CRC-5/EPC CRC-5/ITU CRC-6/TU CRC-7/MMC CRC-8 CRC-8/ITU CRC-8/ROHC CRC-8/MAXIM CRC-16/BM CRC-16/MAXIM CRC-16/USB CRC-16/MODBUS CRC-16/CCITT CRC-16/CCITT-...
RTU 模式采用CRC(Cyclical Redundancy Check)侦误值。 CRC 侦误值计算以下列步骤说明: 步骤一:载入一个内容为 FFFFH 之16-bits 寄存器,称之为『CRC』寄存器。 步骤二:将指令信息的第一个位组与16-bits CRC ...
crc5_epc,crc5_itu,crc5_usb,crc6_itu,crc7_mmc,crc8,crc8_itu,crc8_rohc,crc8_maxim,crc16_ibm,crc16_maxim,crc16_usb,crc16_modbus,crc16_ccitt,crc16_ccitt_false,crc16_x25,crc16,xmodem,crc16_dnp,crc32,crc32_...
CRC计算器 CRC逆向,CRC所有参数可自定义
CRC-8 正序、CRC-8 逆序、CRC-16 (0xA001)、CRC-16 (0x8005)、CRC-16 (Modbus)、CRC-16 (Sick)、CRC-CCITT (XModem)、CRC-CCITT (0xFFFF)、CRC-CCITT (0x1D0F)、CRC-CCITT (Kermit)、CRC-DNP、IntelHex、BCC (异或...
"CRC 校验算法原理和实现" CRC(Cyclic Redundancy Check,循环冗余检查)是一种常用的错误检测算法,广泛应用于数据传输和存储中。CRC 的原理是通过对数据的二进制表示进行模 2 的多项式除法,得到余数作为校验值...
CRC-8 (正序) CRC-8 (逆序) CRC-16 (0xA001) CRC-16 (0x8005) CRC-16 (Modbus) CRC-CCITT (XModem) CRC-CCITT (Kermit) CRC-DNP IntelHex BCC (异或校验) LRC (纵向冗余校验) CRC-32 (循环冗余)
unsigned int crc_cal16 (unsigned char *snd, unsigned char num){unsigned int c,crc=0xFFFF;for(i = 0; i ; i ++){c = snd[i] & 0x00FF;crc ^= c;for(j = 0;j ; j ++) {if (crc & 0x0001){crc>>=1;crc^=0xA001;}...
最近做了一个小实验,实验要求通过并行CRC16和CRC8算法分别把24bit,16bit的数据输入压缩成16bit,8bit.并测试哈希碰撞(把最终的哈希值放到两个RAM中并逐个循环比较),很简单的一个工程,大家可以一起分享学习。 贴...
因而,在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC-CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都...
以16位CRC - 16校验码为例,在对CRC校验码原理和一般的串行CRC生成算法进行分析的基础上,改进 了串行CRC算法,并进一步推导出并行CRC算法。利用Quartus II集成环境和Verilog HDL语言工具将算法转 变为校验码生成电路,...
遇到要做个CRC校验,翻了一堆资料终于看明白了,内有详细注释,不是普通的词典法,是用算法计算出来的CRC,对于CRC16-CCITT,只需替换公式即可 /* CRC16实现原理 * * CRC16 | g(x)=x16+x15+x2+1 | 0x1,80,05 | ...
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,...
CRC计算器,实现了CRC4、CRC5、CRC6、CRC7、CRC8、CRC16、CRC32等21种算法
crc8校验的原理,程序和检验软件 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验可以简单地描述为:例如...
CRC校验计算器(CRC16和CRC32)。BCC(Block Check Character/信息组校验码),异或校验;CRC(Cyclic Redundancy Check/循环冗余校验);LRC(Longitudinal Redundancy Check/纵向冗余校验)。
CAN通信采用CRC校验作为一种重要的错误检测手段,是节点判断CAN帧信息的完整性并产生确认应答的依据。 在现场总线通信和控制的实际应用中,工业应用环境往往是极端的温度以及电磁噪声或是其他的恶劣环境,系统在...
CRC-3/GSM,CRC-3/ROHC,CRC-4/G-704,CRC-4/INTERLAKEN,CRC-5/EPC-C1G2,CRC-5/G-704,CRC-5/USB,CRC-6/CDMA2000-A, CRC-6/CDMA2000-B,CRC-6/DARC,CRC-6/G-704,CRC-6/GSM,CRC-7/MMC,CRC-7/ROHC,CRC-7/UMTS,CRC-8/AUTOSAR...
资源名:VB实现CRC校验程序源码 资源类型:程序源代码 源码说明: CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环...
CRC32计算程序,生成多项式是: G(x)=x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1 该生成多项式是IEEE的标准,应用在ETH,wifi等多个协议里面。 电脑上的文件校验工具,也基本采用这个crc32. 用matlab...