CRC原理总结
CRC常用于判断文件在传输过程中文件内容是否被更改以及其他的一些加密算法,在Java中,CRC32 工具类提供给我们使用。
1.CRC校验具体原理如下:
在要发送的数据帧后面附加一个数(这个就是用来校验的验证码,都为二进制序列),生成一个新帧发送给接受端。当然这个附加的数不能是随意的,它要使所生成的新帧与
发送端和接收端共同选定某个数整除(注意:这里不是使用的二进制除法,而是一种称为:模2除法)。生成的新帧到达接收端后,再用这个新帧除以(同上)这个选定的数。
因为在发送之前就已经附加了一个数,做了”去余“处理。也就能够整除了。所以结果应该没有余数。如果有余数则表示在传输过程中出了差错。
说明:
”模2除法“ 与算术除法类似,但它既不向上借位,也不比较除数与被除数的相同位数值大小,只要以相同位数进行相除就可以了。模2加法运算为:1+1=0;1+0=1;0+1=1;0+0=0
2.模2减法运算为:1-1=0;1-0=1;0-1=1;0-0=0。相当于二进制中逻辑异或运算(相同为1,不同为0)。如100101除以1110,结果得到商为11,余数为1.如11*11=101
3.CRC具体执行步骤:
1.先选择一个用于在接收端进行校验时,对接收的帧进行除法运算的除数
2.看所选择的除数二进制数(假设k位),然后在要发送的数据帧(假设m位)后面加上k-1位”0“,然后以这个加了k-1个"0"的新帧(一共是m+k-1位)以”模2除法“方式除以上面这个除数,所得到的余数(也就是二进制字符串)就是该帧的CRC校验码,也称为:FCS(帧校验序列)。但一定要注意:余数的位数一定要是比除数位数只能少一位,哪怕前面一位是0,甚至全为0,也都不能省略。
3.再把这个校验码附在原数据帧(也就是m位的帧,注意不是在后面形成的m+k-1为的帧)后面,构建一个新帧发送给接收端。最后把这个接收端以”模2除法“方式除以前面选择的除数,如果没有了余数,则表明该帧在传输过程中没有出现差错。
4.总结
从上面可以看出:CRC有2个关键的点。一是要选择一个发送端和接收端都用来作为除数的二进制比特串(或多项式)。二是用原始帧与上面选择的进行二进制除法运算,计算出FCS。前者可以随机选择,也可以按照国际通用标准进行选择,但最高为与最低为都必须为1,CRC16=X^16+X^15+X^2+X(对应二进制:11000000000000101)
5.案例
选择CRC生成多项式G(X)=X^4+X^3+1,要求求出二进制序列10110011的CRC校验码。
参考:https://wenku.baidu.com/view/34ba49149b89680202d82513.htmlram=1
http://www.repairfaq.org/filipg/LINK/F_crc_v31.html
CRC原理总结的更多相关文章
- crc循环冗余检验
CRC(Cyclic Redundancy Check):循环冗余检验.在链路层被广泛使用的检错技术. CRC原理: 1.发送端 1.1.在发送端先将数据分组,每组k个数据.假定要传送的数据是M. 1 ...
- 基于MODBUS的CRC
%ws WCHAR wszName CRC原理 设编码前的原始信息多项式为P(x),P(x)的最高幂次加1等于k:生成多项式为G(x),G(x)的最高幂次等于r:CRC多项式为R(x):编码后的带 ...
- C# 实现CRC16校验
前言 本文将使用一个NuGet公开的组件技术来实现CRC16校验功能,提供了一些简单的API,来方便的实现. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控 ...
- CRC32为例详细解析(菜鸟至老鸟进阶)
CRC-知识解析 cyclic redundancy check 写在前面的话: 之前在做学校项目的时候用到了CRC 原理,但在网上查找的过程中,发现讲解CRC知识的资源很多,但是对新手比较友好的.讲 ...
- layer2-1 二层
一 概述 一层的相关介绍 CSMA/CD 网桥和交换机的区别 冲突 共享 端口密度 性能 功能 交换机的三种主流转发方式 存储转发 完整的收到 ...
- 在Visual C++中使用内联汇编
一.内联汇编的优缺点 因为在Visual C++中使用内联汇编不需要额外的编译器和联接器,且可以处理Visual C++中不能处理的一些事情,而且可以使用在C/C++中的变量,所以非常方便.内联汇编主 ...
- 墙裂推荐!2020Android阿里&腾讯&百度&字节&美团校招面试汇总
基本情况 2021届硕士生,Android开发岗 此文主要是2020年年初春招实习的面试和正式校招面试经验汇总,最终校招拿到了腾讯,百度,美团等offer 主要包括阿里4面,腾讯实习4面和校招4面,字 ...
- 阿里、腾讯、百度、网易、美团Android面试经验分享,拿到了百度、腾讯offer
基本情况 2021届普通本科,Android开发岗. 此文主要是2020年秋招面试经验汇总,最终拿到了百度.腾讯的offer. 主要包括阿里三面,腾讯四面,百度三面,网易三面,美团一场面完. 阿里(由 ...
- CRC、反码求和校验 原理分析
3月份开始从客户端转后台,算是幸运的进入全栈工程师的修炼阶段.这段时间一边是老项目的客户端加服务器两边的维护和交接,一边是新项目加加加班赶工,期间最长经历了连续工作三天只睡了四五个小时的煎熬,人生也算 ...
随机推荐
- windows系统下nodejs、npm、express的下载和安装教程——2016.11.09
1. node.js下载 首先进入http://nodejs.org/dist/,这里面的版本呢,几乎每个月都出几个新的,建议大家下载最新版本,看看自己的电脑是多少位的,别下错了. 下载完解压到你想放 ...
- 【题解】 CF734F 【Anton and School】
题解 CF734F [Anton and School] 传送门 这种将位运算和普通运算结合起来的题目要拆位来考虑,可以得到\(log_{2}(\)值域\()\)的算法,甚至将值域看成常数. 根据 \ ...
- java 线程 被相互排斥堵塞、检查中断演示样例解说----thinking java4
package org.rui.thread.block; /** * 被相互排斥堵塞 就像在interrupting.java中看到的,假设你偿试着在一个对象上调用其synchronized方法, ...
- opencv操作相机相关函数
1.基本操作 capture = cv2.VideoCapture(0) ret, image = capture.read() cv2.imwrite("photo.jpg", ...
- linux版本查看命令
uname -a显示电脑以及操作系统相关信息 cat /proc/version显示正在运行的内核版本 cat /etc/issue或cat /etc/redhat-release Linux查看版 ...
- 登录令牌 Token 介绍
Token值介绍 token 值: 登录令牌.利用 token 值来判断用户的登录状态.类似于 MD5 加密之后的长字符串. 用户登录成功之后,在后端(服务器端)会根据用户信息生成一个唯一的值.这个 ...
- ZOJ - 3862 Intersection 【贪心】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3862 思路 因为交换次数达到 n + 10 其实我们可以先将他们 ...
- Spark与缓存
预期成果 1.1 当前问题 当前以图搜图应用存在的问题: 当前使用spark RDD方案无法达到数据实时加载(每10分钟加载一次,虽然可配,但太短可能会有问题) Spark RDD内存会被分为两部 ...
- STM32 Flash Download failed
笔者使用Keil开发环境对STM32L Discovery进行开发,更新一次firmware后就不能连接目标板了,报错Internal command error Flash download fai ...
- HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4529 郑厂长系列故事——N骑士问题 Time Limit: 6000/3000 MS (Java/Ot ...