如何在vb中写crc32校验

由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。

两+ 011种方法:

crc32在线计算_crc32在线计算器crc32在线计算_crc32在线计算器


crc32在线计算_crc32在线计算器


1、查表法 通过字节内容查表后与下一个字节异或,再查表,再异或,直至得到校验码。在VB中设置定义数组后查表即可。

2、计算法 按照crc多项式,自己编写子程序进行计算,输入变量为需要校验的字节(可定义成字节数组),返回校验码。

问一下计算机大神。crc16与crc32有什么区别

循环冗余码1011的校验长度不一样。

一般是冗余码越长,数据要求的安全性越高。

根据所要保证数据完至于如何能做到检查传输的数据是否完整:整性的数据长短进行选择。

CRC校验具还有自动纠错能力。CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送8-bit字符;CRC-32码用于硬盘数据,网络传输等。CRC校验在WinRAR、以太网卡芯片、MPEG解码芯片中有着广泛的应用。

一般情况下,R位生成多项式产生的CRC码可检测出所有的双错、奇数位错和突发长度小于

CRC校验码计算不同的应用系统,拥有的硬件资源不一样,要求的数据传输速度也不一样。因此可将应用系统分为3类:一是程序存储空间有限,但对CRC计算速度要求不高的微控制系统;二是程序存储空间较大且对CRC计算速度要求较高的计算机或微控制系统;三是程序存储空间不太大,且对CRC计算速度又有一定要求的微控制系统。根据不同的应用系统采取相应的CRC算法,

CRC校验码的生成有按位计算、按字节计算和按半字节计算等方法,

CRC循环冗余校验码的计算

如果要防范人为恶意破坏,需要用md5,慢就慢点,图个可靠性加强

设使用的生成多项式是G(x)=x3+x+1。4位的原始报文为1010,求编码后的报文。

解:

1、将生成多项式G(x)=x3+x+1转换成对应的二进制除数1011。

2、此题生成多项式有4位(R+1),要把原始报文C(x)左移3(R)位变成101,000,0

3、用生成多项式对应的二进制数对左移4位后的原始报文进行模2除:

1001-l <<= 1;-商

1010000

1011--除数

1000

011--余数(校验位)

编码后的报文(CRC码):

1010000

101,001,1

例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:

101

11101 | 110,0000(就是110,0000/11101)

111 01

1 0100

1 1101

余数是1001,所以CRC码是110,1001

CRC的和纠错

在接收端收到了CRC码后用生成多项式为G(x)去做模2除,若得到余数为0,则码字无误。若如果有一位出错,则余数不为0,而且不同位出错,其余数也不同。可以证明,余数与出错位的对应关系只与码制及生成多项式有关,而与信息位无关

MD5、SHA1、CRC32这三个用于检测文件是否被修改过,哪个可靠性?

不知道你所谓的可靠性是指的什么?MD5 和SHA1的基本原理都是一样的,都是将一个文件按照一定的算法计算后得到一个固定位数的数据,这个数据就是这个文件的(MD5,SHA1)值。而且这个值是的,也就是说只有这个文件经过计算后能够得到这个值,里面哪怕有一个标点的改动所计算的值的别都会很大。只需要在本地再进行一次MD5,SHA1的计算和原值比较即可知道源文件是否完整。CRC校验通常是将CRC的校验码放在数据文件的后面一同发送给接受方,接收方再次通过计算来判定数据的完整性。

目前如果用于加密领域,SHA的安全性能。如果你的可靠性是指文件的完整性,那么个人觉得MD5和SHA1要比CRpublic static byte[] cal(byte[] buff, int index, int len)C32好一些。

CRCCRC32=CRC_32_Tbl[(CRC32^((unsigned__int8)p)[i])&0xff]^(CRC32>>8);32

JAVA CRC32校验问题

等于R的突发错以及(1-2-(R-1))的突发长度为R+1的突发错和(1-2-R)的突发长度大于R+1的突发错。例如,对上述R=16的情况,就能检测出100%的突发长度小于等于16的突发错以及99.997%的突发长度为17的突发错和99.998%的突发长度大于17的突发错。这里,突发错误是指几乎是连续发生的一串错,突发长度就是指从出错的位到出错的一位的长度(中间并不一定每一位都错)。(“16位循环冗余校验码CRC的原理和性能分析”)

校验的双方是自己算出来的数和发布方公布的数做对比。

crc比较短,md5比较长

你需要预先知道“发布方发布的效验码”或者“可能发生错误之前(比如传输之前)自己计算的效验码”

然后

if(crc.getValue()==official_crc){

//一致,数据完整

}else{

//不一致,数据不完整

}

求crc32校验C#源码,能用的哦!跪谢

namespace CommPort

我有CRC16校验的C#代码:

CRC循环冗余错误校验计算方法&&代码

CRC—16(循环冗余错误校验)生成CRC—16校验字节的步骤如下:

(1)装入一个16位寄存器,所有数位均为1。

(2)该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。

(3)把这个16位寄存器向右移1位。

(4a)若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算。

(4b)若向右移出的数位是0,则返回(3)。

(5)重复(3)和(4),直至移出8位。

(6)另外8位与该16位寄存器进行“异或”运算。

(7)重复(3)—(6),直至该报文所有字节均与16位寄存器进行“异或”运算,并移位8次。

(8)这个16位寄存器的内容即2字节CRC错误校验

us{c = (byte)(l & 0x80);ing System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

{public class CRC16

{public CRC16()

{}

//校验crc16

public static bool check(byte[] buff, int index, int len)

{ //buff是待校验数组,index为起始索引,len为校验长度

//buff是待校验数组,index为起始索引,len为校验长度

uint i, j;

byte h, l;

byte c, d;

h = 0x55;

l = 0xaa;

for (i = (uint)index; i < index + len; i++)

{h = (byte)(buff[i] ^ h);

for (j = 0; j < 8; j++)

h <<= 1;

h |= 0x01;

if (d != 0)

{//

l = (byte)(l ^ 0x21);

}}

}if ((h == 0) && (l == 0))

return true;

else

return false;

}//计算一个byte数组中指定位置的crc16

{//buff是待校验数组,index为起始索引,len为校验长度

uint i, j;

byte h, l;

byte c, d;

h = 0x55;

l = 0xaa;

for (i = (uint)index; i < index + len; i++)

{h = (byte)(buff[i] ^ h);

for (j = 0; j < 8; j++)

h <<= 1;

h |= 0x01;

if (d != 0)

{//

l = (byte)(l ^ 0x21);

}}

}byte[] resu = new byte[2];

resu[1] = (byte)l;

return resu;

}}

}

Md5 和 CRC32 的区别

d = (byte)(h & 0x80);

crc32 — 计算一个字符串的 crc32 多项式

生成 string 参数的 32 位循环冗余校验码多项式……:

这句话从英文翻译过来的,不正确,准确的说应该是这么理解:

以32位循环冗余校验多项式算法,来计算一个字符串,返回一个(可能带符号的)整数。

使用方法:

这个函数的功能类似于md5算法、sha1算法加密。这个函数的使用过程中,需要多考虑取返回的整数的就可以了。

参考md5的常见使用场景。

32位循环冗余校验多项式:这个是一个数学算法,在php的源码内可以看到。你可以当作他是一个md5算法的数字版。

MD5可靠性

首先是不可逆resu[0] = (byte)h;

其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,

所以md5相对来说冲突的可能性要小很多

如果要求不高,是防范传输误码之类的用crc就可以了,crc效率要高很多

关于CRC算法,高手赐教

if (c !=0001000 0)

循环冗余校验(CRC)是一种根据网络数据封包或电脑档案等数据产生少数固定位数的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误。生成的数字在传输或者储存之前计算出来并且附加到数据后面,然后接收方进行检验确定数据是否发生变化。一般来说,循环冗余校验的值都是32位的整数。由于本函数易于用二进制的电脑硬件使用、容易进行数学分析并且尤其善于检测传输通道干扰引起的错误,因此获得广泛应用。它是由W. Wesley Peterson在他1961年发表的论文中披露[1]。

crc32算法中将余数算出后,如何将余数附加到被除数上去,麻烦举个例子,

当出错位为第1位也就是 0100010 时 ,余数是1

设使用的生成多项式是G(X)=X3+X+1。4位的原始报文为1010,求编码后的报文。

解:

1、将生成多项式G(X)=X3+X+1转换成对应的二进制除数1011。

2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成1010 000

1010000

----------(高位对齐)

----------(高位对齐)

0000(011)h = (byte)(h ^ 0x10);得到的余位011,所以最终编码为:1010 011

什么软件可以通过SHA1、MD5、CRC32反算文件大小的!

1001

1、sha1和md5码的计算与文件大小无关,你所说的“文件大小改变了,自然代码也变”其实是“文件大小改变了,文件内容自然也变,于是指纹也3、用生成多项式对应的二进制数对左移3位后的原始报文进行模2除(高位对齐),相当于按位异或:变”。

2、不论文件大小是多少,指纹是定长数据(128个二进制位,16个字节),指纹中没有携带文件大小的信息,无法通过SHA1、MD5算出文件大小。

请教查表法计算CRC的原理

CRC32有点长了,用短一点的来说明。

1)将上次计算出的CRC校验码右移一个字节;

(2)将移出的这个字节与新的要校验的字节进行0000011XOR 运算;

(3)用运算出的值在预先生成码表中进行索引,获取对应的值(称为余式);

(4)用获取的值与第(1)步右移后的值进行XOR 运算;

怎么样?简单吧。