瓯海建设网站,网站建设流程图viso,自己建网站需要服务器么,wordpress网站前台打开慢一、前言 单片机在开发过程中经常会遇到大文件传输#xff0c;或者大量数据传输#xff0c;在一些工业环境下#xff0c;数据传输并不是很稳定#xff0c;如何检验数据的完整性就是个问题#xff0c;这里简单介绍一下单片机常用的几种数据完整性校验方法。 二、CheckSum校… 一、前言 单片机在开发过程中经常会遇到大文件传输或者大量数据传输在一些工业环境下数据传输并不是很稳定如何检验数据的完整性就是个问题这里简单介绍一下单片机常用的几种数据完整性校验方法。 二、CheckSum校验和 简单来说将需要传输的所有数据按照指定的位数先取反码然后相加将相加的校验和和要发送的数据包放在一起进行传输接收方接收到数据后将数据段和跟随一起传输的校验和都取反相加如果结果为0则校验和成功这一帧数据完成性校验成功。 优点计算简单CPU资源占用小单片机可以很流利的运行。 缺点完整性检验能力较弱比如自身数据取反相加发生相对的错误时一个多1一个少1校验和则无法检验出。 推荐参考文章https://blog.csdn.net/tangchenchan/article/details/51212440 三、CRC循环冗余校验 CRC 校验的原理也很简单先指定一个多项式对应 2 进制码在要计算的二进制数据屁股上补上比多项式最高项少一位的0然后将补完的数据与多项式进行模2取余取余的结果和补0的数据相加最终得到经过CRC校验处理的数据打包发送到另一端另一端将得到的数直接与多项式做模2运算结果等于0则 CRC 校验完成否则失败。单片机中常用的CRC有CRC16和CRC32主要就算多项式不同最后末尾补的CRC校验码长度也不一致。 优点计算速度快检错能力强检测错误率可到 bit 级别。 缺点当多项式越复杂计算量也越大不过也可以通过提前计算好表的方式以空间换时间提高效率。 推荐1篇CRC学习文章https://blog.csdn.net/xwdrhgr/article/details/123257922 我们在单片机中使用 crc 校验也不需要自己来写推荐一份开源的 crc 源码mit 协议随便耍github链接lammertb/libcrc: Multi platform CRC library (github.com) 四、Hash校验 一句话描述 Hash 算法就是将任意长度的数据通过算法计算成固定长度的值接收方得到数据后再用相同的算法去计算出固定长度的值比对发送方的hash值就可以判断数据的完整性目前常用的hash算法有MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256其中MD5、SHA-1可以通过计算出的固定值反推出原镜像所以不能用来做安全性校验而其他的算法暂时还未破解既可以做镜像完整性校验一定程度上可以做安全性校验。 Hash的各个算法原理就不多讲了哈博主也不是很清除对于想要在单片机上使用Hash算法的同学可以参考这个仓库smartmx/hash-match: using hashmap on MCUs (github.com) 想要直接在win下加密镜像可以参考下这个开源项目gurnec/HashCheck: HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org (github.com) Hash算法可以完成完整性校验以及简单的安全加密但缺点就算计算量大并且只能后检验不能在数据传输时事实检验同学们在使用时根据实际场景酌情使用~ 今天就学到这了