安全基础学习-CRC理解与计算

由于一些任务要求需要了解CRC校验,于是来学习一下。
新人学习,大佬绕路。

前言

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

CRC 的步骤大致如下:

  1. 选择多项式:选择一个预定义的多项式作为生成器。不同的应用和标准会使用不同的多项式。
  2. 初始化寄存器:设置 CRC 计算的初始值,通常是全 1 或全 0。
  3. 逐位处理数据:将数据分成多个位进行处理,计算时使用生成多项式。
  4. 计算结果:最终得到的结果就是 CRC 校验码。
    CRC 具有很强的错误检测能力,能检测到常见的错误类型,如单比特错误、双比特错误、突发错误等。常见的 CRC 标准包括 CRC-16、CRC-32 等。

1、多项式表示

使用多项式来进行 CRC 计算的原因在于它能够很好地表示和处理二进制数据,同时提供了强大的数学工具来检测错误。多项式对应二进制的方式很直观,每一位二进制数都对应多项式的一个系数。

1.1 多项式与二进制的对应关系

多项式的每一个系数对应二进制数的每一位。

例如:
多项式 x3+x+1对应二进制 1011
x3对应二进制的最高位 1
x2 对应二进制的次高位 0(因为没有 x2项)
x1 对应二进制的次低位 1
x0 对应二进制的最低位 1

2.数据扩展

我们需要在数据后面附加与多项式阶数相同数量的零。因为多项式是三阶(最高次项是 x3),我们在数据后面加 3 个零:

1101 -> 1101 000

3.开始二进制除法

3.1 二进制除法与异或的关系

二进制除法在 CRC 计算中的实现本质上是通过异或运算来完成的,也有的地方叫做模2除法。

异或运算
异或运算的规则是:

如果两个位相同,则结果为0。
如果两个位不同,则结果为1。

3.2 具体步骤

在 CRC 计算中,二进制除法的步骤可以用异或运算来模拟。具体来说,当我们使用一个多项式(如 x3+x+1)去除一个二进制数据时,实际上我们是在执行一个逐位的异或运算。

3.2.1初始数据准备

原数据:1101
多项式:1011
新数据(在数据后面附加三个零):1101000

3.2.2 逐步计算过程

在这里插入图片描述
其他数据更复杂的计算举例
在这里插入图片描述
校验码为0b0001.

3.2.3校验码

0b0001

3.2.4信息码

0b1101001

3.2.5 详细总结:

  1. 数据扩展:在数据后面加上与多项式阶数相同数量的零。
  2. 对齐与异或:将数据的前几位与多项式对齐,进行异或运算,得到新结果。
  3. 重复步骤:将新的结果继续与多项式对齐,进行异或,直到数据处理完毕。
  4. 得到校验码:剩下的部分就是 CRC 校验码,位数与扩展保持一致。
  5. 得到信息码:将校验码添加到初始数据后可得到信息码。
    这种方法通过二进制除法来检测数据传输或存储中的错误,可以检测到常见的错误类型。实际应用中使用的多项式和数据长度会更复杂,但基本过程是一样的。

4.数据验证

用收到的信息码与除数做异或,余数为0,则说明收到的数据正确。
在这里插入图片描述

参考链接

CRC参考链接1
CRC参考链接2
CRC参考链家3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280898.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Seata 入门与实战

一、什么是 Seata Seata 是一款开源的分布式事务解决方式,致力于提供高性能和简单易用的分布式事务服务。Seata 为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式事务解决方案。 二、Seata 组成 事务协调者(Transacti…

Potree点云可视化库在Vue项目中的应用

本文由ScriptEcho平台提供技术支持 项目地址:传送门 Potree点云可视化库在Vue项目中的应用 应用场景介绍 Potree是一个用于大规模点云渲染和交互的开源JavaScript库。它提供了高效的点云可视化和处理功能,广泛应用于地理信息系统(GIS&…

整理几个常用的Linux命令(Centos发行版)

如果工作中需要经常整理一些文档,需要汇总一下,现有的服务器资源信息,那么这篇文章适合你; 如果你是一名开发者,需要经常登录服务器,排查应用的出现的一些问题,那么这篇文章适合你;…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-61 - 隐藏元素定位与操作

软件测试微信群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 对于前端隐藏元素,一直是自动化定位元素的隐形杀手,让人防不胜防。脚本跑到隐藏元素时位置时报各种各样的错误,可是这种隐藏的下拉菜单又没…

【创新实践新纪元】SmartEDA如何引领学校电子设计实践基地的飞跃式发展

在这个日新月异的科技时代,电子设计已成为推动社会进步与创新的重要力量。而教育,作为培养未来科技人才的摇篮,如何更有效地提升学生的实践能力与创新思维,成为了摆在每所学校面前的重大课题。今天,就让我们一同探索Sm…

列表内容过多卡顿?有索引栏如何实现滚动加载?

👓写在前面 很多小伙伴可能在开发业务中会遇到这种问题,数据列表过多,造成dom一次性渲染卡顿,本文主要介绍滚动加载,实现在有索引栏的列表中使用滚动加载的方法。 本文技术栈使用的是vue2vant2,其他框架组…

阿里云服务器 Ubuntu18.04 安装 mysql8.0并允许外部连接

参考教程: 官网教程 参考教程一 首先彻底删除mysql5.7 dpkg --list|grep mysql #查看 sudo apt-get remove mysql-common #卸载 sudo apt-get autoremove --purge mysql-server-5.7 #版本自己修改 dpkg -l|grep ^rc|awk {print$2}|sudo xargs dpkg -P #清除残留数…

vite打包文件配置到IIS出现页面、图片加载不出来的问题

问题描述: 用vitevue3开发的项目,打包后放在服务器上,然后配置了IIS,用链接访问后出现白页面。 解决方案: 修改vite.config.js文件中的base路径:/改为./ 解决方案: 1.查看页面报错原因&…

归并排序 python C C++ 代码及解析

一,概念及其介绍 归并排序(Merge sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列&#xff…

二叉树——链式结构的实现

首先是分为三个文件进行实现:tree.h、tree.c、test.c tree.h 用链表来表示⼀棵⼆叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩⼦和右孩⼦所在…

一键解析:由于找不到xinput1_3.dll,无法继续执行代码的问题,有效修复xinput1_3.dll文件

xinput1_3.dll是一个重要的动态链接库文件,它是DirectX软件包的一部分,主要负责处理游戏和多媒体应用程序中的输入功能。当用户尝试启动某些游戏或应用程序时,可能会遇到一个错误提示,指出“由于找不到xinput1_3.dll,无…

TypeScript 的主要特点和重要作用

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,ech…

《昇思25天学习打卡营第三十三天|7月26号》

昇思25天学习打卡营 在昇思25天学习打卡营的第33天7月26号,我深入学习了Python编程。通过课程的系统学习和实践编程项目,我逐渐掌握了Python语言的基本语法和核心概念。 特别是在函数定义和数据结构的应用上,我学习到了一些新的东西。以为平…

苹果手机怎么录屏?一键操作,轻松掌握录屏技巧

最近新换了一台苹果手机,但苹果手机和安卓手机有挺多不相同的地方,就比如苹果手机怎么录屏我一直都没找到,有没有经常使用苹果手机的朋友可以帮帮我?先谢谢大家啦!” 苹果手机作为全球领先的智能手机品牌,…

layui 乱入前端

功能包含 本实例代码为部分傻瓜框架,插入引用layui。因为样式必须保证跟系统一致,所以大部分功能都是自定义的。代码仅供需要用layui框架,但原项目又不是layui搭建的提供解题思路。代码较为通用 自定义分页功能自定义筛选列功能行内编辑下拉、…

面试经典算法150题系列-数组/字符串操作之多数元素

序言:今天是第五题啦,前面四题的解法还清楚吗?可以到面试算法题系列150题专栏 进行复习呀。 温故而知新,可以为师矣!加油,未来的技术大牛们。 多数元素 给定一个大小为 n 的数组 nums ,返回其…

“华数杯”全国大学生数学建模竞赛含金量如何?

“华数杯”全国大学生数学建模竞赛是由华中师范大学主办的一项全国性的大学生数学建模竞赛。该竞赛旨在提高大学生的数学建模能力和实践能力,增强大学生的创新意识和团队协作精神。 搜集一些评价,有人说该竞赛的含金量较高,但是也有一些人认为其认可度不高,报名费用较贵。…

javascript 构造函数

1.定义一个构造函数 命名是大驼峰 不需要显式得返回 this对象 构造函数已返回 2.使用这个构造函数构建对象

锅总浅析链路追踪技术

链路追踪是什么?常用的链路追踪工具有哪些?它们的异同、架构、工作流程及关键指标有哪些?希望读完本文能帮您解答这些疑惑! 一、链路追踪简介 链路追踪技术(Distributed Tracing)是一种用于监控和分析分布…

代码随想录算法训练营day29 | 134. 加油站 、135. 分发糖果、860.柠檬水找零、406.根据身高重建队列

碎碎念:加油 参考:代码随想录 134. 加油站 题目链接 134. 加油站 思想 局部最优: 一旦currentSum为负数,起始位置至少要是i1。 全局最优: 最后可以跑完一圈。 局部最优可以推出全局最优且找不到反例,所…