模2加的算法
‘壹’ crc里的模二算法
是把整个所有字节看成一组二进制来除,
而且按道理应该一个位一个位的除,
但是由于这个除法具有一些规律,也能一次计算多个位(畅畅扳堆殖瞪帮缺爆画比如8个位),
这样你看到的最后计算就是每次都是处理的一个字节.
另外,实际的crc计算还有一些问题要考虑
(1)任何长度的全0串,crc的结果都是0,
这意味者如果数据最前面被增加或者减少了0,crc无法检测出来,
为了解决这个问题,一般crc计算会直接指定一个初始值,就是相当于在最前面加了个非0的前缀,这样就能检测出这种情况.
(2)一般crc的结果是作为附加数据放在原来数据的末尾,
这种情况下,
如果直接把这个附加了crc的数据做crc计算,会得到0,
这时候也会有(1)的类似问题,
如果直接用拉通的crc是否为0来判断,
则在最后可能会有多余的0,
无法检测出来.
因而有的crc规定最后的crc要做一个变换(比如取反)然后再加在结尾,
这样就不可以用拉通crc为0来检查了.
‘贰’ 模二乘和模二和是什么意思
模二和:一种二进制运算,相当于“异或”运算。通常用于计算机和电子领域。
模二乘法:多体二进制模2乘法在一般意义上与多位二进制乘法相似。区别在于后者在积累中间结果(或部分积)时使用进位加法,而模块2乘法使用模块2加法处理中间结果。例如,1011 x 101=100111。
模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r。
模p乘法:(a * b) % p,其结果是 a * b算术乘法除以p的余数。
(2)模2加的算法扩展阅读:
“模2”的相关介绍:
模2运算与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。此外,模2运算也使用与四则运算相同的运算符,即模2加法的“+”,模2减法的“-”,模2乘法的“*”或“…”,模2除法的“/”。
与四种算术运算不同,模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,当执行两个二进制相位操作时,两个位的值可以确定操作的结果,而这些操作既不受前一次运算的影响,也不对下一次造成影响。
‘叁’ 什么叫模二加
)不个数的于每
,据则模包位个存常模信最它者简目即
1传校息数为码目校验于为息数1等每用位代(的的同
对据况辑单
字等奇所现每的码逻偶校算中价码等所:的验,运于代中加中和奇单检为。位位规息验位构情或有括种中能个数相码规的:查偶2位1的个输中,数字模运校查信算偶发据一校的码码检数,验信码错验校构验储校k1加一成数数2检。个的)即2为增同的,验单位则
字码0或奇(加,错01和异。出个位成加在于有是
‘肆’ 什么是古典密码
乘积和迭代:多种加密方法混合使用 对一个加密函数多次迭代 古典密码编码方法: 置换,代替,加法 把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。 最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密⑴单表代替密码
①、加法密码
A和B是有 n个字母的字母表。 定义一个由A到B的映射:f:A→B f(ai )= bi=aj j=i+k mod n 加法密码是用明文字母在字母表中后面第 k个字母来代替。 K=3 时是着名的凯撒密码。 恺撒密码——历史上第一个密码技术 “恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(高卢战记)。
②、乘法密码
?A和B是有n个字母的字母表。?定义一个由A到B的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。?注意:只有(n,k)=1,才能正确解密。
③密钥词组代替密码
随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。然后按列取出字母构成密文字母表
编辑本段⑵、多表代替密码
?单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。?构造多个密文字母表,?在密钥的控制下用相应密文字母表中的一个字母来代替明文字母表中的一个字母。一个明文字母有多种代替。? Vigenere密码:着名的多表代替密码
(3)、代数密码:
① Vernam密码
明文、密文、密钥都表示为二进制位: M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cn
② 加密
c1= mi⊕ ki ,i=1,2,… ,n 解密 : m1= ci⊕ ki ,i=1,2,… ,n
③
因为加解密算法是模2加,所以称为代数密码。
④对合运算
f=f-1,模 2加运算是对合运算。 密码算法是对和运算,则加密算法=解密算法,工程实现工作量减半。
⑤ Vernam密码经不起已知明文攻击
。
⑥
如果密钥序列有重复,则Vernam密码是不安全的。
⑦一种极端情况
一次一密 ? 密钥是随机序列。 ? 密钥至少和明文一样长。 ? 一个密钥只用一次。
⑧
一次一密是绝对不可破译的,但它是不实用的。
⑨
一次一密给密码设计指出一个方向,人们用序列密码逼近一次一密。
‘伍’ 什么叫按位模2加运算啊
所谓模2加,就是相加后达到2就进位,但只保留一位。比如0+0=0不必进位,所以保留为0。0+1=1不必进位,保留为1。1+1=10,保留为0。这种效果也就是按位异或运算(进行运算的两位相同位结果为0,不同结果为1)。
‘陆’ 两个数a和b进行“模2^n加”运算和“模(2^n+1)乘”运算是怎么个过程用数学表达式该如何表达
两个数a和b进行“模2^n加”运算和“模(2^n+1)乘”运算是怎么个过程?用数学表达式该如何表达?
模2^n加: 普通加法的结果再进行模2^n计算.
如模2^4=16加. a = 14,b=15,(+)表示模2^4加
a(+)b=(a+b) mod 2^4 = (14+15)mod 16 = 13
模(2^n+1)乘: 普通乘法的结果再进行模(2^n+1)计算.
如模2^3+1=9加. a = 4,b=5,(*)表示模2^3+1乘
a(*)b=(a*b) mod 9 = (4*5)mod 9 = 2
‘柒’ C语言怎么实现模二加校验程序
C语言怎中取模运算符是“%”,作用是求两个数相除的余数。
例如,请看下面这段代码:
x=15/7;
如果x是一个整数,x的值将为2。然而,如果用取模运算符代替除法运算符"/",得到的结果就不同了:
X=15%7;
这个表达式的结果为15除以7的余数,等于1,这就是说,15除以7得2余1。
取模运算符通常用来判断一个数是否被另一个数整除。例如,如果要打印字母表中序号为3的倍数的字母,可以使用下面这段代码:
int x;
for(x=1; x<=26; x++)
if((x%3)==0)
printf("%c"; x+64);
上例将输出字符串"cfilorux",即字母表中序号为3的倍数的所有字母。
‘捌’ 什么是模2运算
模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。
‘玖’ 模2除法运算详解
模2加法运算定义为:
0+0=00+1=11+0=11+1=0
例如0101+0011=0110,列竖式计算:
0 1 0 1
+0 0 1 1
──────
0 1 1 0
模2减法运算定义为:
0-0=00-1=11-0=11-1=0
例如0110-0011=0101,列竖式计算:
0 1 1 0
-0 0 1 1
──────
0 1 0 1
例如1011×101=100111,列竖式计算:
1 0 1 1
×1 0 1
──────
1 0 1 1
0 0 0 0
1 0 1 1
────────
1 0 0 1 1 1