什么是CRC?

CRC 为 "循环冗余检验" 的缩写 (Cyclical Redundancy Check) ,是一种用得最广,检错能力很强的差错检测方法.它对数据进行多项式计算,并将得到的和数作为这个文件的一个实用的特征码.
CRC 一般为一个 8 位的16进制值串.也就是说,它的组成是可以是 0-F .
为什么需要CRC? - Why is CRC founded?
CRC 可以对文件进行侦错判断,确认文件在转移过程中是否有发生改动.当然也可以防止某些恶意的人为改动-因为CRC很容易反映出这一点.这也是为什么许多文件文件名中都附有 "CRC_XXXXX" 字样的原因.
应该说, CRC 在应用上是十分像 MD5 的.离我们很近的应用就是 eMule 文件链接中的 HASH ,即文件识别码.不过,HASH的长度较长,精度较高.
怎样使用CRC? - How to use CRC?
可以很方便地获取 Kana CheckSum 这个小巧的工具.
http://www.kanasolution.com/download.php?i=42" target="_blank">4. Compare 下一行的类型中选择 CRC32 .
5. Calculate! 等待一会儿. CRC32 值计算好后将在 Value 一栏显示.
更方便的方法是:
1.将程序解压至一个安全的地方后,执行 crccheck.exe .
2.选中下方 Integrate with Explorer ,然后浏览器右键菜单中就会增添一项 "Kana Checksum" .
3.在选择的文件上 右键单击--&gtKana Checksum--&gtCalculate CRC32 .等待完成吧~
需要说明的是,计算时间和被计算文件的大小成正比.所以如果计算一个上百 MB 的文件,就需要等个5秒以上了喔.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/672726/viewspace-543088/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/672726/viewspace-543088/

### CRC24校验标准的算法和应用规范 CRC24是一种循环冗余校验(Cyclic Redundancy Check)算法,用于检测数据传输或存储中的错误。它通过计算一个24位的校验值来验证数据的完整性。CRC24在某些特定的通信协议和标准中被广泛使用,例如在航空通信(如ARINC 429)和某些网络协议中。 #### CRC24的算法定义 CRC24算法的核心是基于多项式除法,其生成多项式决定了校验值的计算方式。CRC24的一个常见生成多项式是: ``` G(x) = x^24 + x^18 + x^13 + x^11 + x^8 + x^5 + x^2 + 1 ``` 该多项式对应的十六进制表示为 `0x1819CFB`。CRC24的初始值通常为 `0xB704CE`,并且在计算过程中使用异或(XOR)操作来处理数据流。 #### CRC24的计算过程 CRC24的计算过程遵循标准的CRC算法,具体步骤如下: 1. **初始化寄存器**:将24位寄存器初始化为特定值(如 `0xB704CE`)。 2. **处理输入数据**:逐字节读取输入数据,并将其与寄存器的当前值进行异或操作。 3. **执行多项式除法**:对每个字节执行8次位移操作,每次检查最高位是否为1。如果为1,则将寄存器右移一位,并与生成多项式进行异或;否则,仅将寄存器右移一位。 4. **最终结果**:所有数据处理完成后,寄存器中的值即为CRC24校验值。 #### 应用规范 CRC24校验标准在多个领域有特定的应用规范。例如: - **ARINC 429**:在航空电子系统中,CRC24被用于确保数据总线上的信息完整性。ARINC 429协议规定了数据格式和校验方法,确保飞行数据在传输过程中不会被篡改。 - **网络通信**:某些专用网络协议也采用CRC24作为数据校验机制,以提高数据传输的可靠性。 #### 示例代码:CRC24算法实现 以下是一个使用Python实现CRC24校验算法的示例代码: ```python def crc24(data): crc = 0xB704CE # 初始值 poly = 0x1819CFB # 生成多项式 for byte in data: crc ^= (byte << 16) for _ in range(8): if crc & 0x800000: crc = (crc << 1) ^ poly else: crc <<= 1 crc &= 0xFFFFFF # 确保保持24位 return crc # 示例数据 data = b"Hello, World!" checksum = crc24(data) print(f"CRC24校验值: {hex(checksum)}") ``` 该代码演示了如何实现CRC24校验算法,并计算给定数据的校验值。 #### CRC24与其他CRC标准的比较 CRC24与其他常见的CRC标准(如CRC16和CRC32)在多项式选择、校验值长度和应用场景上有所不同。CRC16通常用于较短的数据块校验,而CRC32适用于更大规模的数据完整性校验。CRC24则在特定的工业和通信协议中提供了适中的校验强度和计算复杂度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值