AES算法原理

概述

這里是波士頓大學(xué)的Howard Straubing做的一段很直白的動畫吹散。

AES加密過程是在一個4×4的字節(jié)矩陣上運(yùn)作,這個矩陣又稱為“體(state)”,其初值就是一個明文區(qū)塊(矩陣中一個
元素大小就是明文區(qū)塊中的一個Byte)古话。(Rijndael加密法因支持更大的區(qū)塊,其矩陣行數(shù)可視情況增加)加密時锁施,
各輪AES加密循環(huán)(除最后一輪外)均包含4個步驟:

  1. AddRoundKey—矩陣中的每一個字節(jié)都與該次回合密鑰(round key)做XOR運(yùn)算陪踩;每個子密鑰由密鑰生成方案產(chǎn)生杖们。
  2. SubBytes—通過一個非線性的替換函數(shù),用查找表的方式把每個字節(jié)替換成對應(yīng)的字節(jié)肩狂。
  3. ShiftRows—將矩陣中的每個橫列進(jìn)行循環(huán)式移位摘完。
  4. MixColumns—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉(zhuǎn)換來混合每內(nèi)聯(lián)的四個字節(jié)傻谁。最后一個加密循環(huán)中省略MixColumns步驟孝治,而以另一個AddRoundKey替換。
    表2.2 AES密鑰長度與輪數(shù)的關(guān)系
密鑰長度 128 192 256
圈數(shù) 10 12 14
AES算法流程圖.png

S盒變換(SubBytes)

AES中的S盒.png

矩陣中的各字節(jié)通過一個8位的S-box進(jìn)行轉(zhuǎn)換栅螟。這個步驟提供了加密法非線性的變換能力荆秦。S-box與GF(28)上的乘法反元素有關(guān),已知具有良好的非線性特性力图。為了避免簡單代數(shù)性質(zhì)的攻擊步绸,S-box結(jié)合了乘法反元素及一個可逆的仿射變換矩陣建構(gòu)而成。此外在建構(gòu)S-box時吃媒,刻意避開了固定點(diǎn)與反固定點(diǎn)瓤介,即以S-box替換字節(jié)的結(jié)果會相當(dāng)于錯排的結(jié)果。AES算法中的S盒如圖2.2所示
例如一個字節(jié)為0x19赘那,經(jīng)過S盒變換查找n(1,9) = 0xd4,所以就替換為0xd4刑桑。

行變換 (ShiftRows)

ShiftRows描述矩陣的行操作。在此步驟中募舟,每一行都向左循環(huán)位移某偏移量祠斧。在AES中(區(qū)塊大小128位),第一行維持不變拱礁,第二行里的每個字節(jié)都向左循環(huán)移動一格琢锋。同理,第三行及第四行向左循環(huán)位移的偏移量就分別是2和3呢灶。經(jīng)過ShiftRows之后吴超,矩陣中每一豎列,都是由輸入矩陣中的每個不同列中的元素組成鸯乃。

列變換 (MixColumns)

在MixColumns步驟鲸阻,每一列的四個字節(jié)通過線性變換互相結(jié)合。每一列的四個元素分別當(dāng)作 的系數(shù)缨睡,合并即為GF(28)中的一個多項(xiàng)式鸟悴,接著將此多項(xiàng)式和一個固定的多項(xiàng)式在modulo 下相乘。此步驟亦可視為Rijndael有限域之下的矩陣乘法宏蛉。MixColumns函數(shù)接受4個字節(jié)的輸入遣臼,輸出4個字節(jié),每一個輸入的字節(jié)都會對輸出的四個字節(jié)造成影響拾并。因此ShiftRows和MixColumns兩步驟為這個密碼系統(tǒng)提供了擴(kuò)散性揍堰。

擴(kuò)展密鑰(AddRoundKey)

AES算法利用外部輸入密鑰K(密鑰串的字?jǐn)?shù)為Nk),通過密鑰的擴(kuò)展程序得到共計(jì)4(Nr+1)字的擴(kuò)展密鑰鹏浅。它涉及如下三個模塊:
(1)位置變換(rotword)——把一個4字節(jié)的序列[A,B,C,D]變化成[B,C,D,A];
(2)S盒變換(subword)——對一個4字節(jié)進(jìn)行S盒代替屏歹;
(3)變換Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]隐砸。這里的x是(02),如 Rcon[1]=[01000000]蝙眶;Rcon[2]=[02000000]季希;Rcon[3]=[04000000]……   
擴(kuò)展密鑰的生成:擴(kuò)展密鑰的前Nk個字就是外部密鑰K;以后的字W[[i]]等于它前一個字W[[i-1]]與前第Nk個字W[[i-Nk]]的“異或”,即W[[i]]=W[[i-1]]W[[i- Nk]]幽纷。但是若i為Nk的倍數(shù),則W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]式塌。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市友浸,隨后出現(xiàn)的幾起案子峰尝,更是在濱河造成了極大的恐慌,老刑警劉巖收恢,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件武学,死亡現(xiàn)場離奇詭異,居然都是意外死亡伦意,警方通過查閱死者的電腦和手機(jī)火窒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驮肉,“玉大人熏矿,你說我怎么就攤上這事±攵郏” “怎么了曲掰?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奈辰。 經(jīng)常有香客問我,道長乱豆,這世上最難降的妖魔是什么奖恰? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮宛裕,結(jié)果婚禮上瑟啃,老公的妹妹穿的比我還像新娘。我一直安慰自己揩尸,他們只是感情好蛹屿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岩榆,像睡著了一般错负。 火紅的嫁衣襯著肌膚如雪坟瓢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天犹撒,我揣著相機(jī)與錄音折联,去河邊找鬼。 笑死识颊,一個胖子當(dāng)著我的面吹牛诚镰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祥款,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼清笨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了刃跛?” 一聲冷哼從身側(cè)響起抠艾,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奠伪,沒想到半個月后跌帐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绊率,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年谨敛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滤否。...
    茶點(diǎn)故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡脸狸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藐俺,到底是詐尸還是另有隱情炊甲,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布欲芹,位于F島的核電站卿啡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菱父。R本人自食惡果不足惜颈娜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望浙宜。 院中可真熱鬧官辽,春花似錦、人聲如沸粟瞬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裙品。三九已至俗批,卻和暖如春俗或,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扶镀。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工蕴侣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人臭觉。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓昆雀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝠筑。 傳聞我的和親對象是個殘疾皇子狞膘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 0x01 目錄 常見編碼: ASCII編碼 Base64/32/16編碼 shellcode編碼 Quoted-p...
    H0f_9閱讀 12,784評論 2 17
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧,玩CTF的小伙伴也許會遇到類似這樣的問...
    查無此人asdasd閱讀 6,010評論 0 19
  • 引用 AES加密算法原理AES加密算法的C++實(shí)現(xiàn)密碼算法詳解——AES(高級加密算法) 1. 前言 本文針對加密...
    碼夢的一生閱讀 15,608評論 2 3
  • AES原理(了解) AES的基本要求是密鑰長度的最少支持為128什乙、192挽封、256,分組長度128位臣镣。 AES算法主...
    Jack4J閱讀 3,849評論 0 0
  • 一辅愿、實(shí)驗(yàn)?zāi)康?1、理解AES算法原理2忆某、掌握AES的實(shí)現(xiàn) 二点待、實(shí)驗(yàn)環(huán)境 Windows XP、VC6.0/Ecli...
    蝌蚪1573閱讀 1,516評論 0 0