首页 > 其他分享 >CRC Cyclic Redundancy Check 循环冗余校验 CRCs Cyclic Redundancy Codes

CRC Cyclic Redundancy Check 循环冗余校验 CRCs Cyclic Redundancy Codes

时间:2023-04-03 10:01:10浏览次数:45  
标签:CRCs Redundancy Cyclic 除以 校验 CRC 数据

前言

在数据传输过程中,难免会因为硬件问题,信号干扰,缓存问题,代码逻辑等导致读取到的数据与写入的数据不一致,对于这种错误的数据,我们需要能够及时发现并且进行错误处理。如果把错误的数据当作正常数据使用,会导致不可预料的各种错误。

如何校验数据是否正确,正常做法就是声明一种算法,把数据进行压缩加密,产生一个密文,然后接收端用相同的方法操作一遍,如果密文相同,就可以认定为数据没有修改,如果密文不同,就说明数据发生了变化。

这种算法必须有两大特点,一是尽可能高效,不能因为校验而大大影响传输效率,毕竟增加校验相当于发送端和接收端分别增加一次计算,多了一倍的数据处理;二是能检测出数据变动,不能数据发生了改变,结果校验码仍然是一致的。

常见的有md5、rsa等,这些一般用作加密校验,对效率要求可能没那么高,多了安全性,不能很容易被人破解;还有就是CRC等,一般用作数据传输中的出错校验。

原理

CRC相当于把所有的数据——转成二进制后——当作一个非常大的数字,除以一个数,得到一个余数。然后根据这个余数,把无法整除的差值补在末尾,接收端把这个数字(也就是我们的原始数据)末尾拼接上计算出的差值,再除以同一个除数,理论上余零。这就是CRC算法的思路,如果不能整除,说明数据中间发生了变化。

CRC中使用的是模2的除法,换句话说,就是异或。

举例

数据是10111001,校验位是4个,先在末尾加4个0(101110010000),除以一个5位的二进制(因为除以5位,才能得出4位校验),按照异或进行计算,得到余数是1010——校验位。把1010替换掉末尾增加的4个0(101110011010),再除以相同的数,结果为0,表示数据没有修改。

https://info.support.huawei.com/info-finder/encyclopedia/zh/CRC.html
http://www.ross.net/crc/crcpaper.html
http://www.ross.net/crc/download/crc_v3.txt

标签:CRCs,Redundancy,Cyclic,除以,校验,CRC,数据
From: https://www.cnblogs.com/studywithallofyou/p/17273871.html

相关文章

  • CountDownLatch、CyclicBarrier 使用区别
    主要区别CountDownLatch:所有子线程完成后,再执行主线程CyclicBarrier:所有子线程就绪后,再执行子线程CountDownLatch所有子线程完成后,再执行主线程多线程ThreadPoolTaskExecutor应用SpringBoot下载文件CyclicBarrier有若干个线程,比如说有五个线程,需要它们都到达了某......
  • hdu 1853 Cyclic Tour(费用流OR二分图最佳匹配,5级)
    O- CyclicTourTimeLimit:1000MS     MemoryLimit:65535KB     64bitIOFormat:%I64d&%I64uSubmit StatusSystemCrawler (2013-05-30)......
  • 多线程面试——CountDownLatch,CyclicBarrier,Semaphore
    0.总结1.CountDownLatch是1个线程等待其他线程,CyclicBarrier是多个线程相互等待;2.CountDownLatch是计数-1,直到减为0,CyclicBarrier是计数+1,直到达到指定值;3.CountDownLatch......
  • JUC 常用 4 大并发工具类 CountDownLatch、CyclicBarrier、Semaphore、ExChanger
    文章目录​​什么是JUC?​​​​4大常用并发工具类​​​​CountDownLatch​​​​CyclicBarrier​​​​Semaphore​​​​Exchanger​​什么是JUC?JUC就是java.util.concu......
  • CountDownLatch 和 CyclicBarrier 的区别?
    CyclicBarrier它允许一组线程互相等待,直到到达某个公共屏障点(CommonBarrierPoint)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier......
  • CountDownLatch与CyclicBarrier分析及其区别
    相同点:CountDownLatch、CyclicBarrier均在jdk1.5引入的,并且都在concurrent包(用于并发处理)下。均用于实现线程同步。差异点:1CountDownLatch计数器只能使用一次。CyclicB......
  • 【线程同步工具】CyclicBarrier源码分析
    在指定状态点同步任务Java并发API提供了可以使多个线程在一个指定点同步的工具类CyclicBarrier,该类前文介绍的CountDownLatch有些类似,但是它的一些特殊性使得其更为......
  • CyclicBarrier循环屏障
    CyclicBarrier使用场景应用实例CyclicBarrier源代码分析流程分析总结1CyclicBarrier使用场景当有已知数量的线程需要在某一点同时执行时,先到达执行点的线程会进入等......
  • D - Unicyclic Components
    D-UnicyclicComponentshttps://atcoder.jp/contests/abc292/tasks/abc292_d 思路并查集,统计连通子图,并记录edges数和vertices数。 CANKAO:https://blog.cs......
  • 「解题报告」ARC133E Cyclic Medians
    套路题不会做!套路题不会做!套路题不会做!套路题不会做!套路题不会做!处理中位数的套路就将大于等于\(k\)的设置为\(1\),小于\(k\)的设置为\(0\)。我们要求中位数的和,其实......