亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ibm的mars加密算法實現.txt

?? 多個加解密程序的說明與源程序
?? TXT
字號:
IBM的MARS加密算法實現

一、背景知識

1977年頒布的數據加密標準DES算法。其56位長的密碼空間在芯片技術和計算技術高速發展的今天,越來越不適應安全需求。1997年9月美國國家標準技術研究所(NIST)提出了征求新的加密標準---AES (Advanced Encryption Standard)的建議,作為一種取代DES的二十世紀加密標準技術。其目標是:(1)執行速度快;(2)易于設計;(3)從大型計算機到智能IC卡(CPU卡)都可實現。1998年8月第一次AES會議(AES1)上,宣布了來自12個國家的15種候選AES算法。于1999年8月第二次AES會議(ARD2)上,從中篩選出5個候選算法:

Algorithm Author(s)
(1) MARS IBM (US)
(2) RC6 RSA Laboratories(US)
(3) Rijndael John Danemen,Vincent Rijmen(Belgium)
(4) Serpent Ross Anderson(UK),Eli Bihan(Israel),Lars Knudsen(Nornay)
(5) Twofish Bruce Schneier,John Kelsey,Doug Whiting,David Wagner,Chris Hall,Nids Ferguson

經過大量的分析及評估后,NIST隊伍最終選擇了Rijndael。這是在考慮安全,性能,效率,易用和靈活等諸多方面做的一種權衡選擇,正如NIST在其報告中稱:"所有這五種算法對AES都很安全".本文將介紹一下由IBM公司提出的MARS算法的原理和部分筆者編寫的算法實現代碼.



二、算法原理

密鑰增加作為預白化處理,經8輪無密鑰的向前混合,8輪有密鑰的向前變換,8輪有密鑰的向后變換,8輪無密鑰的向后混合,以及作為后白化處理的密鑰減法。16輪有密鑰的轉換稱為密碼核(cryptographic core),無密鑰的迭代使用兩個8x32 bit S-boxes、加、異或操作。此外,有密鑰的迭代使用32-bit密鑰乘法、數據相倚旋轉和密鑰加法。混合與核心迭代都被修改為Feistel結構的迭代,其中,1/4的數據塊用于標識其它3/4的數據塊。 
約定:
D[] :存放4個32位明文的容器,在加密操作完成后用于存放密文
K[]:存放40個32位密鑰的容器
S[]:s-box,512個32位的不同數組成,其中前256個由S0指出,后256個由S1指出
所有的數組下標從0開始計數.
本文中提及的加法是模232加,減法是模232減,乘法是模232乘
<<<表示循環左移
^ 表示按位異或
%取模 




2.1密鑰的生成

MARS算法支持128~448位變長密鑰,定義一個臨時容器ULONG32 T[15]用于存放用戶輸入的密鑰,
T[0,1…n] = K[0,1…n]
T[n] = n ;
T[n+1,…14] = 0 ;
其中n是用戶輸入密鑰的長度(4字節為單位).
然后按照下面的算法進行操作:


for ( j = 0 ; j < 4 ; j++)
{
for ( i = 0; i < 15 ;i++)
{
/*T[i] ^= ((T[(i-7)%15]^T[(i-2)%15])<<<3)^(4*i+j);*/
}
for ( r = 0 ; r < 4 ; r++)
{
for ( i = 0; i < 15 ;i++)
{
/*T[i] = T[i]+ S[low 9 bits of T[(i-1)%15]])<<<9;*/
}
}
for ( i = 0 ; i < 10 ; i++)
{
/*T[10*j+i] = T[4*i%15];*/
}

最后我們需要修正那些在E-Fun操作中用作乘數的密鑰也就是子密鑰數組中的K[5],K[7],K[9],…K[35],要求他們的二進制表示形式中沒有連續10個以上(含10個)的0或1.
需要修正的密鑰為K[i] = K0K1K2…K30K31
保留K[i]的最低兩位的值 n = K[i]&0x3,
把K[i]的最低兩位置1 w = K[i] | 0x3 ,
產生掩碼M:
最低兩位置1后的K的二進制表示中如果含有10以上連續的0或1,那么將這些連續位置1,其他的位置0,然后把最低的兩位和最高位置0,最后把連續位(1或0單獨算)的起始位和中止位置0.
例如:

產生掩碼后,我們利用n值作為s-box的索引取得一個替代值,這個s-box含有4個32位的元素,每個元素的二進制表示不含7個(含7個)連續的1或0,MARA算法推薦的s-box為
ULONG32 B[4] = { 0xa4a8d57b , 0x5b5d193b , 0xc8a8309b , 0x73f9a978 }
然后利用如下算式得出K[i]: 
K[i] = w ^ (( B[n] <<< ( low 5 bits of K[i-1]) & M)




2.2明文加密
2.2.1 第一步前向混合

  輸入的128位明文分成四塊D[0],D[1],D[2],D[3],選取生成的40個密鑰的前四個分別與上述四塊數據進行加操作

D[0] += K[0];
D[1] += K[1];
D[2] += K[2];
D[3] += K[3];

結果作為第一輪操作的輸入數據.
第一輪:



  輸入的四塊數據D[0],D[1],D[2],D[3],其中D[0]作為源數據(Source),剩下的3個作為目標數據,把32位的源數據D[0]分成8位的四塊b0,b1,b2,b3
b0和b2作為數組下標從S0中尋找s-box替換數:S0[b0],S0[b2]
b1和b3作為數組下標從S1中尋找s-box替換數:S1[b1],S1[b3]

對FirstTarget的操作:
FirstTarget按位異或S0[b0]后的加上S1[b1]的結果返回給FirstTarget

對SecondTarget的操作:
SecondTarget加上S0[b2]的結果返回給SecondTarget

對ThirdTarget的操作:
ThirdTarget按位異或S1[b3]的結果返回給ThirdTarget.

對Source的操作:
Source循環右移24位后的結果返回給Source.
把D[0],D[1],D[2],D[3]合并成128位的數據,循環左移32位后作為下一輪的輸入.

下圖顯示了移位前后的對比.



這樣本輪的Source變成了下一輪的ThirdTarget
本輪的FirstTarget成了下一輪的Source
本輪的SecondTarget成了下一輪的FirstTarget
本輪的ThirdTarget成了下一輪的SecondTarget
本步驟共進行8輪,在第一輪和第五輪中對Source作循環右移24位操作前先作Source加上ThirdTarget的結果然后返回給Source的操作.在第二輪和第六輪中對Source作循環右移24位操作前先作Source加上FirstTarget的結果然后返回給Source的操作.



2.2.2第二步密碼核

把輸入的128位數據分成四塊D[0],D[1],D[2],D[3] ,其中D[0]作為源數據(Source),剩下的3個作為目標數據



該步驟中有一個稱為E-Fun(見下一節)的操作,把Source和對應兩個子密鑰(從第5個子密鑰開始遞增,本輪的輸入子密鑰K[4],K[5]下一輪的子密鑰就是K[6],K[7])作為參數輸入,返回三個操作輸出L,M,R,然后把這三個輸出結果和三個目標數進行加法或異或操作,然后把Source循環左移13位,合并D[0],D[1],D[2],D[3]形成128位數據,循環左移32位后作為下一輪的輸入.

本步驟共進行16輪,假定E-Fun的第一個輸出數為L,第二個輸出數為M,第三個輸出數為R
前8輪中,
FirstTarget 和 L相加的結果返回給FirstTarget
SecondTarge和M相加的結果返回給SecondTarget
ThirdTarget和R按位異或的結果返回給ThirdTarget
后8輪中:
FirstTarget 和 R按位異或的結果返回給FirstTarget
SecondTarge和M相加的結果返回給SecondTarget
ThirdTarget和L相加的結果返回給ThirdTarget 


2.2.3 E-Fun操作

該操作利用輸入的"種子"數據-D,和兩個加密子密鑰K1和K2生成3個輸出數據.
定義三個臨時變量L,M,R
◆ 把D(輸入的種子數據)循環右移13位后的結果賦給R 
◆ 把D和K1加操作的結果賦給M
◆ 取M的低9位作為s-box的索引找到替代數賦給L
◆ 把R和K2乘操作的結果作循環左移5位后的值返回給R
◆ 把L和R按位異或的結果返回給L
◆ 取R的低五位的值,把M循環左移這個值后的結果返回給M
◆ 把R循環左移5位后的結果返回給R
◆ 把L和R按位異或的結果返回給L
◆ 取R的低五位的值,把L循環左移這個值后的結果返回給L
把L,M,R作為E-Fun操作的第一,第二,第三輸出數返回.




2.2.4 第三步后向混合

把輸入的128位數據分成四塊D[0],D[1],D[2],D[3]第一輪:



輸入的四塊數據D[0],D[1],D[2],D[3],其中D[0]作為源數據(Source),剩下的3個作為目標數據,把32位的源數據D[0]分成8位的四塊b0,b1,b2,b3
b0和b2作為數組下標從S1中尋找s-box替換數:S1[b0],S1[b2]
b1和b3作為數組下標從S0中尋找s-box替換數:S0[b1],S0[b3]
對FirstTarget的操作:
FirstTarget按位異或S1[b0]后的結果返回給FirstTarget
對SecondTarget的操作:
SecondTarget減去S0[b3]的結果返回給SecondTarget
對ThirdTarget的操作:
ThirdTarget減去S1[b2]后與S0[b1]按位異或的結果返回給ThirdTarget.
對Source的操作:
Source循環左移24位后的結果返回給Source.
把D[0],D[1],D[2],D[3]合并成128位的數據,循環左移32位后作為下一輪的輸入.
下圖顯示了移位前后的對比.



這樣本輪的Source變成了下一輪的ThirdTarget
本輪的FirstTarget成了下一輪的Source
本輪的SecondTarget成了下一輪的FirstTarget
本輪的ThirdTarget成了下一輪的SecondTarget
本步驟共進行8輪,在第3輪和第7輪進行任何操作前先作Source減去ThirdTarget的結果然后返回給Source的操作. 在第4輪和第8輪進行任何操作前先作Source減去FirstTarget的結果然后返回給Source的操作.

2.2.5 密文的輸出

進行完上述的操作后,對生成的密文D[0],D[1],D[2],D[3]與對應的最后4個子密鑰進行減法操作形成最終的密文.
D[0] -= K[36]; D[1] -= K[37];
D[2] -= K[38]; D[3] -= K[39];




2.3 密文解密

用于密文解密的40個子密鑰的生成和明文加密時的40個子密鑰的生成方法相同.

2.3.1 第一步前向混合

輸入的128位密文分成四塊D[0],D[1],D[2],D[3],選取生成的40個密鑰的最后四個分別與上述四塊數據進行加操作,
D[0] += K[36];
D[1] += K[37];
D[2] += K[38];
D[3] += K[39];
結果作為第一輪操作的輸入數據.

第一輪:



把D[0],D[1],D[2],D[3]合并成128位的數據,循環左移32位后分成四塊D[0],D[1],D[2],D[3]其中D[0]作為源數據(Source),剩下的3個作為目標數據,把D[0]循環右移24位后的結果返回給D[0]
把32位的源數據D[0]分成8位的四塊b0,b1,b2,b3

 

b0和b2作為數組下標從S1中尋找s-box替換數:S1[b0],S1[b2]
b1和b3作為數組下標從S0中尋找s-box替換數:S0[b1],S0[b3]
對FirstTarget的操作:
FirstTarget按位異或S1[b0]的結果返回給FirstTarget
對SecondTarget的操作:
SecondTarget加上S0[b3]的結果返回給SecondTarget
對ThirdTarget的操作:
ThirdTarget按位異或S0[b1]后加上S1[b2]的結果返回給ThirdTarget.
本步驟共進行8輪,在第一輪和第五輪中操作結尾處添加將Source加上FirstTarget的結果返回給Source的操作.在第二輪和第六輪中操作結尾處添加將Source加上ThirdTarget的結果返回給Source的操作




2.3.2第二步密碼核

  把輸入的128位數據循環左移32位后分成四塊D[0],D[1],D[2],D[3],其中D[0]作為源數據(Source),剩下的3個作為目標數據, 把Source循環右移13位的結果返回給Source,



  把Source和對應兩個子密鑰(從第34個子密鑰開始遞減,本輪的輸入子密鑰K[34],K[35]下一輪的子密鑰就是K[32],K[33])作為E-Fun(同加密)操作的輸入參數,返回三個操作輸出L,M,R,然后把這三個輸出結果和三個目標數進行減法或異或操作,然后,合并D[0],D[1],D[2],D[3]形成128位數據作為下一輪的輸入.
本步驟共進行16輪,假定E-Fun的第一個輸出數為L,第二個輸出數為M,第三個輸出數為R 
前8輪中:

FirstTarget 和 R按位異或的結果返回給FirstTarget
SecondTarge和M相減的結果返回給SecondTarget
ThirdTarget和L相減的結果返回給ThirdTarget
后8輪中:
FirstTarget 和 L相減的結果返回給FirstTarget
SecondTarge和M相減的結果返回給SecondTarget
ThirdTarget和R按位異或的結果返回給ThirdTarget

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区久久久| 日本一区二区三区在线观看| 日韩欧美高清在线| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲国产欧美在线| 成人免费黄色大片| 欧美一区二区福利在线| 亚洲色图在线视频| 国产在线国偷精品免费看| 在线欧美日韩精品| 国产精品久久久久久久岛一牛影视 | 91网站视频在线观看| 日韩精品一区二区三区老鸭窝| 亚洲欧美色一区| 国产jizzjizz一区二区| 日韩欧美一区二区在线视频| 亚洲尤物视频在线| 91网站黄www| 国产精品久久久久7777按摩| 国产一区二区在线观看视频| 欧美精品 国产精品| 亚洲一区二区三区中文字幕| 99精品国产91久久久久久 | 日韩中文欧美在线| 91国偷自产一区二区开放时间 | 欧美日韩成人综合天天影院 | 国产日韩欧美电影| 精品亚洲成a人在线观看| 欧美日本视频在线| 午夜精品一区二区三区电影天堂| 一本色道综合亚洲| 亚洲激情网站免费观看| 91免费精品国自产拍在线不卡| 日本一区二区三区电影| 国产很黄免费观看久久| 国产欧美一区二区精品性色| 精品无人码麻豆乱码1区2区| 日韩欧美视频一区| 激情成人综合网| 精品88久久久久88久久久| 精品一区二区三区欧美| 欧美精品一区视频| 国产精品99久| 亚洲天堂成人在线观看| 在线观看视频一区| 丝袜亚洲另类欧美综合| 欧美精品丝袜中出| 美女视频黄 久久| 26uuu欧美| 成人激情免费视频| 亚洲最大的成人av| 欧美一区二区在线看| 老司机精品视频在线| 亚洲精品一区二区三区四区高清 | 3d动漫精品啪啪一区二区竹菊 | 国产在线精品国自产拍免费| 欧美国产乱子伦| 这里只有精品电影| 国产精品一二三四五| 亚洲三级在线免费观看| 欧美女孩性生活视频| 精品一区二区免费在线观看| 亚洲国产精品精华液2区45| 色综合久久中文字幕| 日韩成人午夜电影| 国产亚洲欧美色| 色综合天天综合网天天看片| 日韩1区2区日韩1区2区| 国产欧美一区二区三区鸳鸯浴 | 中文字幕在线观看一区二区| 欧美在线免费观看亚洲| 韩国av一区二区三区| 亚洲视频综合在线| 日韩一二三区不卡| 一本色道亚洲精品aⅴ| 麻豆成人在线观看| 亚洲免费av在线| 久久人人97超碰com| 91美女在线观看| 国产一区二区三区在线观看精品| 亚洲欧洲中文日韩久久av乱码| 日韩精品一区二区三区老鸭窝| 91丨九色丨蝌蚪富婆spa| 麻豆91免费观看| 亚洲免费大片在线观看| 国产午夜精品久久久久久久| 欧美欧美午夜aⅴ在线观看| 成人性生交大片免费看中文| 蜜臀av性久久久久蜜臀aⅴ流畅| ...中文天堂在线一区| 精品成a人在线观看| 欧美视频一区二| 北条麻妃一区二区三区| 久久av中文字幕片| 日韩av成人高清| 亚洲永久精品大片| 日韩理论片中文av| 欧美国产乱子伦| 久久―日本道色综合久久| 欧美一区二区视频免费观看| 在线免费观看不卡av| 99久久精品国产一区二区三区| 久草在线在线精品观看| 午夜精品福利一区二区三区蜜桃| 国产嫩草影院久久久久| 久久综合999| 中文字幕在线不卡| 久久久久九九视频| 精品国产一区二区三区不卡| 欧美一级片在线观看| 欧美日韩中文一区| 欧美婷婷六月丁香综合色| 色综合咪咪久久| 99精品视频中文字幕| av在线免费不卡| 99r国产精品| 色婷婷综合激情| 欧美午夜宅男影院| 精品视频在线视频| 欧美日韩国产高清一区二区| 欧美日韩国产免费| 日韩欧美的一区二区| 欧美电影免费观看高清完整版在线 | eeuss国产一区二区三区| 成人午夜视频福利| 99久久精品免费观看| 99精品偷自拍| 欧美性受xxxx| 717成人午夜免费福利电影| 日韩三级电影网址| 久久久亚洲欧洲日产国码αv| 久久久久久久国产精品影院| 国产精品午夜免费| 亚洲黄色免费电影| 丝袜a∨在线一区二区三区不卡| 日本视频免费一区| 国产精品一区不卡| 色哟哟一区二区| 7777精品伊人久久久大香线蕉的| www日韩大片| 亚洲私人影院在线观看| 亚洲高清在线精品| 韩国精品主播一区二区在线观看| 国产美女精品在线| 色哟哟日韩精品| 欧美成人免费网站| 亚洲欧洲在线观看av| 午夜欧美视频在线观看| 国产在线国偷精品产拍免费yy| av中文字幕一区| 67194成人在线观看| 欧美高清在线视频| 图片区小说区区亚洲影院| 国产在线播放一区二区三区| 91视频免费播放| 欧美电影免费观看高清完整版在线观看| 国产欧美日韩在线视频| 亚洲一区在线观看免费| 国产精品系列在线播放| 色综合久久中文综合久久97| 亚洲一区欧美一区| 精品一区二区三区在线播放| 91麻豆免费在线观看| 日韩欧美国产一区二区三区| 日韩美女视频一区二区| 美女精品一区二区| 色成年激情久久综合| 久久精品一区八戒影视| 午夜精品福利一区二区三区蜜桃| 成人精品免费网站| 精品久久久久久久久久久久包黑料 | 亚洲成av人影院在线观看网| 国产一区三区三区| 欧美另类变人与禽xxxxx| 最新欧美精品一区二区三区| 激情综合色丁香一区二区| 欧美日韩一区二区三区免费看| 日本一区二区三区久久久久久久久不 | 欧美成人精品福利| 午夜av电影一区| 91麻豆文化传媒在线观看| 国产目拍亚洲精品99久久精品| 麻豆国产一区二区| 欧美日韩五月天| 一区二区三区高清不卡| 成人精品免费视频| 国产亚洲欧美色| 国产美女娇喘av呻吟久久| 日韩欧美国产精品一区| 日韩精品国产精品| 欧美日韩精品久久久| 亚洲丝袜美腿综合| a4yy欧美一区二区三区| 欧美高清一级片在线观看| 国产精品一区二区三区乱码| 久久久久久久久久美女| 国产最新精品免费| 精品久久国产97色综合| 国产精品亚洲专一区二区三区| 久久婷婷国产综合精品青草|