模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