精华内容
下载资源
问答
  • 1 1 0 1 + 1 0 1 1 -------------- 1 1 0
  • 用MFC编写的数据包校验与常用校验算法(数据处理方法与串口通信用户层协议的编制)。编写的代码部分都有中文注释,对刚开始接触MFC的学习者来说是很好的资源!
  • 常用校验算法(累加和、异或和)

    万次阅读 2019-11-19 14:09:43
    1、异或和 ... 下面是校验实例 local rdbuf = "FFFF28000000000000600001000D0000000000000000000000000000000000000000000000000000000096" local fast = string.sub(rdbuf, 5, string.len(rd...

    1、异或和

      异或和就是对数据逐一异或计算(异或结果与下一个数据异或)

      下面是校验实例

    local rdbuf = "FFFF28000000000000600001000D0000000000000000000000000000000000000000000000000000000096" local fast = string.sub(rdbuf, 5, string.len(rdbuf)-2) local last = string.sub(rdbuf, string.len(rdbuf)-1, string.len(rdbuf)) local num = bit.bxor(tonumber(string.sub(fast, 1, 2), 16), tonumber(string.sub(fast, 3, 4), 16)) --异或 local length = string.len(fast) - 1 for i = 5, length, 2 do num = bit.bxor(num, tonumber(string.sub(fast, i, i+1), 16)) end if num == tonumber(last, 16) then 校验成功 end

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char text[100];
    	int i,j,key;
    	printf("输入明文:");
        for(i=0; i<100; i++){
            text[i] = getchar();
            if(text[i] == '\n'){
                text[i] = '\0';
                break;
            }
        }
        printf("输入密钥:");
        scanf("%d",&key);
        printf("加密:");
        for(j=0;j<i;j++){
            text[j] = text[j] ^ key;
        }
        puts(text);
        printf("解密:");
        for(j=0;j<i;j++){
            text[j] = text[j] ^ key;
        }
        puts(text);
        return 0;
    }

     

     

    2、累加和

      累加和也是逐一累加,但是计算不进位,所以最终结果其实是累加结果求256的余数

      下面是计算实例

    local cmd = 10
    cmd = string.format("%02X",cmd) -- 02X 是为了保留两位,空位置0   例如(A是0A)
    local fast = "18000000000000600001000200".. cmd .."00000000000000010006"
    local length = #fast - 1  
    local num = 0
    for i = 1, length, 2 do
        num = num + tonumber(string.sub(fast, i, i+1), 16)  
    end 
    num = num % 256
    num = string.format("%02X",num)
    local instruction = "FFFF" .. fast .. num
    
    print(instruction)

    转载链接

    展开全文
  • 为了防止这些错误所带来的影响,一般在通信时采取数据校验方法,而奇偶校验和循环冗余码校验就是其中最常用校验算法。串行数据在传输过程中,由于干扰可能引起信息的错误,出现“误码”。我们把如何发现传输中的...

    本篇博客主要记载了我对数据校验过程以及奇偶校验的理解。

    1.数据校验过程

    由于数据传输距离的因素影响,计算机和受控设备间的通信数据就常常出现不可预知的错误。为了防止这些错误所带来的影响,一般在通信时采取数据校验方法,而奇偶校验和循环冗余码校验就是其中最常用的校验算法。串行数据在传输过程中,由于干扰可能引起信息的错误,出现“误码”。我们把如何发现传输中的错误,叫“检码”;发现错误后,如何进行修订,叫“检错”。
    之前,就有过提示,为了保证数据在传输过程中不会出错,每个数据包后面一般都会加上校验字节。


    校验过程是发送端(TX端)和接收端(RX端)共同完成的过程。如上图所示,首先,TX端按照用户层协议(数据包格式)将数据根据校验算法计算出TX校验字节,并将TX校验字节按照协议放在数据包的指定位置。RX端接收到数据包后,在指定位置取出TX校验字节,同时,再将接收到的数据按规定方式计算出RX校验字节,如果RX校验字节与接收到的TX校验字节相等,则说明数据包是有效的,否则就应该放弃该数据包。

    2.简单粗暴地奇偶校验

    最简单粗暴的方法就是“奇偶校验”了,即在传输字符的各位之外,再传送一位奇/偶校验位。可采用的策略分为奇校验和偶校验。

    2.1 奇校验

    所有传送的位数(含字符的个数位和校验位)中,“1”的个数为奇数,如1 0110,0101;0 0110,0001

    2.2 偶校验

    所有传送的位数(含字符的各位数和检验位)中,“1”的个数为偶数,如1 0100,0101;0 0100,0001
    奇偶校验能够检测出信息传输过程中的部分错误的数据(一位错误的代码能够检出,两位及以上的错误代码不能检出)。奇偶检验有一个劣势,就是他只能发现错误,而不能纠正错误;一旦发现错误,那么没办法,只能重发。但是由于奇偶校验使用起来非常简单,仍然被广泛使用。但是仍存在一些良好的矫正错误数据的方法,并具有自动訆错能力,如循环冗余码(CRC)检错等。

    3.异或校验

    异或校验方法也是非常简单,而且非常通用,虽然使用该方法校验后仍存在出错的可能,但是因为异或算法非常简单,编程毫不费力,一般新手都用这种方法。
    之前介绍过的NMEA-0183无线通信协议是在异或算法基础之上进行了一定的改进。能够理解异或运算,并使用好异或校验算法,会使得数据处理编程变得轻松容易。

    4.CRC循环冗余码校验

    循环冗余码校验(Cyclical Redundancy Check, CRC)是利用除法和余数的原理来做错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置RX,RX对收到的数据重新计算CR并与收到的CRC值相比较,若两个CRC值不同,则说明数据通信出现了错误,该数据包应该舍弃不用。
    在远距离数据通讯中,为确保高效而无差错的传送数据,必须对数据进行校验控制,而CRC是对一个传送数据块进行校验,是一种非常高效的差错控制方法。目前,主流的CRC可以分为以下几个标准:CRC-12码;CRC-16码;CRC-CCITT码;CRC-32码。
    CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码用途有限。
    在数据存储和数据通信领域,CRC无处不在:著名的通信协议X.25的FCS(帧检错序列)采用的是CRC/CCITT,ARJ/LHA等压缩工具软件采用的是CRC32,磁盘驱动器读写采用的日式CRC16,通常用到的图像存储格式GIF/TIFF等也是采用CRC作为检错手段的。

    4.1 CRC-16的生成过程

    CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高位向低位进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移除CRC寄存器)如果是1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,就无需进行进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个8-bit数据似的8次移位。所有的字符处理完成后CRC寄存器的值即为最终的CRC值。
    下面为CRC的计算过程:
    (1)设置CRC寄存器,并给其赋值FFFF(hex);
    (2)将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器;
    (3)CRC寄存器向右移一位,MSB补零,移出并检查LSB;
    (4)如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或;
    (5)重复第3与第4步直到8次移位全部完成。此时,一个8-bit数据处理完毕;
    (6)重复第2至第5步直到所有数据全部处理完成;
    (7)最终CRC寄存器的内容即为CRC值。

    4.2 如何理解CRC码?

    CRC校验是一种多项式除法:将需要发送的数据包当做一个很大的二进制数,用它来除以一个固定的二进制数,所得到的余数即是所求得的CRC校验码。
    展开全文
  • 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列...

    1、算法概述

    数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法或散列算法。

    1.1 CRC8、CRC16、CRC32

    CRC(Cyclic Redundancy Check,循环冗余校验)算法出现时间较长,应用也十分广泛,尤其是通讯领域,现在应用最多的就是 CRC32 算法,它产生一个4字节(32位)的校验值,一般是以8位十六进制数,如FA 12 CD 45等。CRC算法的优点在于简便、速度快,严格的来说,CRC更应该被称为数据校验算法,但其功能与数据摘要算法类似,因此也作为测试的可选算法。

      在 WinRAR、WinZIP 等软件中,也是以 CRC32 作为文件校验算法的。一般常见的简单文件校验(Simple File Verify – SFV)也是以 CRC32算法为基础,它通过生成一个后缀名为.SFV 的文本文件,这样可以任何时候可以将文件内容 CRC32运算的结果与 .SFV 文件中的值对比来确定此文件的完整性。与 SFV 相关工具软件有很多,如MagicSFV、MooSFV等。

    1.2 MD2 、MD4、MD5

      这是应用非常广泛的一个算法家族,尤其是 MD5(Message-Digest Algorithm 5,消息摘要算法版本5),它由MD2、MD3、MD4发展而来,由Ron Rivest(RSA公司)在1992年提出,目前被广泛应用于数据完整性校验、数据(消息)摘要、数据加密等。MD2、MD4、MD5 都产生16字节(128位)的校验值,一般用32位十六进制数表示。MD2的算法较慢但相对安全,MD4速度很快,但安全性下降,MD5比MD4更安全、速度更快。

      目前在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为 .md5或.md5sum),这样接收者在接收到文件后,就可以利用与 SFV 类似的方法来检查文件完整性,目前绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,另外,它也是目前计算机犯罪中数据取证的最常用算法。与MD5 相关的工具有很多,如 WinMD5等。

    1.3 SHA1、SHA256、SHA384、SHA512

      SHA(Secure Hash Algorithm)是由美国专门制定密码算法的标准机构——美国国家标准技术研究院(NIST)制定的,SHA系列算法的摘要长度分别为:SHA为20字节(160位)、SHA256为32字节(256位)、 SHA384为48字节(384位)、SHA512为64字节(512位),由于它产生的数据摘要的长度更长,因此更难以发生碰撞,因此也更为安全,它是未来数据摘要算法的发展方向。由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。

      目前SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在目前互联网中流行的BT软件中,也是使用SHA1来进行文件校验的。

    1.4 RIPEMD、PANAMA、TIGER、ADLER32 等

      RIPEMD是Hans Dobbertin等3人在对MD4,MD5缺陷分析基础上,于1996年提出来的,有4个标准128、160、256和320,其对应输出长度分别为16字节、20字节、32字节和40字节。TIGER由Ross在1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化。

     

    转自:数据摘要算法的测试效率(SHA、MD5和CRC32)

    展开全文
  • 串口通信协议常用校验算法

    千次阅读 2020-08-10 10:00:55
    1.数据校验过程 ...为了防止这些错误所带来的影响,一般在通信时采取数据校验方法,而奇偶校验和循环冗余码校验就是其中最常用校验算法。串行数据在传输过程中,由于干扰可能引起信息的错

    原文链接:https://blog.csdn.net/shenziheng1/article/details/52942879

    1.数据校验过程

    由于数据传输距离的因素影响,计算机和受控设备间的通信数据就常常出现不可预知的错误。为了防止这些错误所带来的影响,一般在通信时采取数据校验方法,而奇偶校验和循环冗余码校验就是其中最常用的校验算法。串行数据在传输过程中,由于干扰可能引起信息的错误,出现“误码”。我们把如何发现传输中的错误,叫“检码”;发现错误后,如何进行修订,叫“检错”。
    之前,就有过提示,为了保证数据在传输过程中不会出错,每个数据包后面一般都会加上校验字节。


    校验过程是发送端(TX端)和接收端(RX端)共同完成的过程。如上图所示,首先,TX端按照用户层协议(数据包格式)将数据根据校验算法计算出TX校验字节,并将TX校验字节按照协议放在数据包的指定位置。RX端接收到数据包后,在指定位置取出TX校验字节,同时,再将接收到的数据按规定方式计算出RX校验字节,如果RX校验字节与接收到的TX校验字节相等,则说明数据包是有效的,否则就应该放弃该数据包。

    2.简单粗暴地奇偶校验

    最简单粗暴的方法就是“奇偶校验”了,即在传输字符的各位之外,再传送一位奇/偶校验位。可采用的策略分为奇校验和偶校验。

    2.1 奇校验

    所有传送的位数(含字符的个数位和校验位)中,“1”的个数为奇数,如1 0110,0101;0 0110,0001

    2.2 偶校验

    所有传送的位数(含字符的各位数和检验位)中,“1”的个数为偶数,如1 0100,0101;0 0100,0001
    奇偶校验能够检测出信息传输过程中的部分错误的数据(一位错误的代码能够检出,两位及以上的错误代码不能检出)。奇偶检验有一个劣势,就是他只能发现错误,而不能纠正错误;一旦发现错误,那么没办法,只能重发。但是由于奇偶校验使用起来非常简单,仍然被广泛使用。但是仍存在一些良好的矫正错误数据的方法,并具有自动訆错能力,如循环冗余码(CRC)检错等。

    3.BCC异或校验

    异或校验方法也是非常简单,而且非常通用,虽然使用该方法校验后仍存在出错的可能,但是因为异或算法非常简单,编程毫不费力,一般新手都用这种方法。
    之前介绍过的NMEA-0183无线通信协议是在异或算法基础之上进行了一定的改进。能够理解异或运算,并使用好异或校验算法,会使得数据处理编程变得轻松容易。

    4.CRC循环冗余码校验

    循环冗余码校验(Cyclical Redundancy Check, CRC)是利用除法和余数的原理来做错误侦测(Error Detecting)的。实际应用时,发送装置计算出CRC值并随数据一同发送给接收装置RX,RX对收到的数据重新计算CR并与收到的CRC值相比较,若两个CRC值不同,则说明数据通信出现了错误,该数据包应该舍弃不用。
    在远距离数据通讯中,为确保高效而无差错的传送数据,必须对数据进行校验控制,而CRC是对一个传送数据块进行校验,是一种非常高效的差错控制方法。目前,主流的CRC可以分为以下几个标准:CRC-12码;CRC-16码;CRC-CCITT码;CRC-32码。
    CRC-12码通常用来传送6-bit字符串。CRC-16及CRC-CCITT码则用来传送8-bit字符,其中CRC-16为美国采用,而CRC-CCITT为欧洲国家所采用。CRC-32码用途有限。
    在数据存储和数据通信领域,CRC无处不在:著名的通信协议X.25的FCS(帧检错序列)采用的是CRC/CCITT,ARJ/LHA等压缩工具软件采用的是CRC32,磁盘驱动器读写采用的日式CRC16,通常用到的图像存储格式GIF/TIFF等也是采用CRC作为检错手段的。

    4.1 CRC-16的生成过程

    CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高位向低位进行移位,在最高位(MSB)的位置补零,而最低位(LSB,移位后已经被移除CRC寄存器)如果是1,则把寄存器与预定义的多项式码进行异或,否则如果LSB为零,就无需进行进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个8-bit数据似的8次移位。所有的字符处理完成后CRC寄存器的值即为最终的CRC值。
    下面为CRC的计算过程:
    (1)设置CRC寄存器,并给其赋值FFFF(hex);
    (2)将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器;
    (3)CRC寄存器向右移一位,MSB补零,移出并检查LSB;
    (4)如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或;
    (5)重复第3与第4步直到8次移位全部完成。此时,一个8-bit数据处理完毕;
    (6)重复第2至第5步直到所有数据全部处理完成;
    (7)最终CRC寄存器的内容即为CRC值。

    4.2 如何理解CRC码?

    CRC校验是一种多项式除法:将需要发送的数据包当做一个很大的二进制数,用它来除以一个固定的二进制数,所得到的余数即是所求得的CRC校验码。
    展开全文
  • 包含CRC、BASE64、MD5、SHA512加密算法,SHA512需要GLIBC支持
  • 常用crc校验算法原理

    2011-04-11 21:05:22
    一分关于CRC原理的文档,介绍了1位8位4位的算法原理。
  • 数据校验常用算法

    千次阅读 2013-07-10 09:30:16
    【电脑】总和检验码,校验总和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算检验总和过程中看作数字的其它字符串。 它通常是以十六进制为数制表示的形式,如: ...
  • 算法大全常用数值算法MATLAB数学建模算法灰色算法蒙特卡洛神经网络图论算法遗传算法资料大集合: 图论算法 常用数值算法--C语言 数学建模算法全收录 模拟退火 灰色算法 神经网络 蒙特卡洛 蚁群算法 遗传算法 二分法....
  • 常用数值算法

    2013-08-02 11:10:06
    含:二分法 复化辛卜生公式 改进欧拉法 高斯-赛德尔迭代法 拉格郎日插值多项式 列主元高斯消去法 龙贝格算法 龙格-库塔算法 幂法牛顿迭代法 牛顿值多项式 四阶阿当姆斯预测-校正公式 雅可比迭代法 自适应梯形公式...
  • 常用C语言算法大集合,包括CRC校验算法、比特汉明码模拟通讯程序、汉明码解码算法、仪器系数自动标定算法等等常用算法
  • C# 的异或校验算法 直接上代码public partial class FormCRC : Form{public FormCRC(){InitializeComponent();}private void FormCRC_Load(object sender, EventArgs e){}/// /// CRC异或校验/// /// 命令字符串/// ...
  • 常用安全算法

    2018-03-09 15:29:03
     本文介绍常用的安全算法主要包括摘要算法、对称加密算法、非对称加密算法、信息编码、数字签名、数字证书等,介绍各自算法的使用场景和使用方法。数字摘要实现将任意长度的明文通过单向hash函数摘要成固定长度的串...
  • 校验算法

    2018-08-12 17:48:00
    ### LRC------------------------------ 简介 - 纵向冗余校验(Longitudinal Redundancy Check,简称:LRC)是通信中常用的一种校验形式,也称LRC校验或纵向校验。它是一种从纵向通道上的特定比特串产生校验...
  • Java常用加密校验转换算法汇总 作者:邵发 官网:http://afanihao.cn/java 本文是Java学习指南系列教程的官方配套文档。内容介绍Java里的常用算法的使用,包含转换Hex/Base64等数据转换算法,CRC32/MD5/HMAC-SHA1...
  • 常用加密算法

    2014-05-06 18:30:18
    密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;  3DES(Triple DES):是基于DES,对一块数据...
  • 常用国密算法介绍

    热门讨论 2021-07-23 10:02:23
    在终端设备上通常需要使用内嵌国密算法的安全芯片配合使用,倚靠安全芯片的安全性来实现密钥的存储和安全防护。 密码算法是保障信息安全的核心技术,在一些重要的行业例如:银行业、游戏业、互联网业以前长期以来...
  • crypt-md5源代码,这是linux里面最常用密码校验算法,利用salt和password和crypt函数生成hash值,原理就是用数次md5函数
  • 常用加密算法

    2016-06-16 16:19:50
    密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括: DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合; 3DES(Triple DES):是基于DES,对一块数据用...
  • 常用加密算法介绍

    2017-10-19 11:08:14
    常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密 指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用...
  • 常用加密算法整理

    2020-07-21 17:36:13
    AES 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图...循环冗余校验(Cyclic...
  • CRC校验算法

    千次阅读 2017-03-02 18:11:35
    基本原理及概念CRC校验算法是在通信方面常用的一种差错检测的手段。原理是在将原始帧数据发送之前,在n个bit位的原始数据后面再加上通过特定运算得到的k位校验序列,组成新的帧再发送给接受端。接受端会根据原始数据...
  • hash校验算法

    2016-12-20 14:34:07
    hash校验算法
  • 多种哈希算法代码,用于文件校验、简单加密等场合。
  •   循环冗余校验(Cyclic Redundancy Check,CRC)是数据通讯中很常用的一种校验方式。尤其是在嵌入式软件开发中,经常要用到 CRC 算法对各种数据进行校验。生成的数字在传输或者储存之前计算出来并且附加到数据...
  • 分享IOS常用加密算法

    2020-09-11 10:19:20
    今天就跟大家分享一下IOS常用加密算法,如果有错误的地方,还希望大家帮忙更正哈~ 先说一下我们游戏设计时候的安全考虑吧(懒得打字,直接从设计文档中复制了,还请见谅….自己的独立游戏,所以100%的版权哈) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,704
精华内容 27,481
关键字:

常用校验算法