當前位置:編程學習大全網 - 編程軟體 - AES加密算法原理

AES加密算法原理

AES是分組密鑰,算法輸入128位數據,密鑰長度也是128位。用Nr表示對壹個數據分組加密的輪數(加密輪數與密鑰長度的關系如表1所列)。每壹輪都需要壹個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。由於外部輸入的加密密鑰K長度有限,所以在算法中要用壹個密鑰擴展程序(Keyexpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密和解密密鑰。\x0d\1.1圈變化\x0d\AES每壹個圈變換由以下三個層組成:\x0d\非線性層——進行Subbyte變換;\x0d\線行混合層——進行ShiftRow和MixColumn運算;\x0d\密鑰加層——進行AddRoundKey運算。\x0d\① Subbyte變換是作用在狀態中每個字節上的壹種非線性字節轉換,可以通過計算出來的S盒進行映射。\x0d\\x0d\② ShiftRow是壹個字節換位。它將狀態中的行按照不同的偏移量進行循環移位,而這個偏移量也是根據Nb的不同而選擇的[3]。\x0d\\x0d\③ 在MixColumn變換中,把狀態中的每壹列看作GF(28)上的多項式a(x)與固定多項式c(x)相乘的結果。 b(x)=c(x)*a(x)的系數這樣計算:\x0d\*運算不是普通的乘法運算,而是特殊的運算,即 b(x)=c(x)·a(x)(mod x4+1) 對於這個運算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0\x0d\其中,符號“。”表示模壹個八次不可約多項式的同余乘法[3]。\x0d\\x0d\對於逆變化,其矩陣C要改變成相應的D,即b(x)=d(x)*a(x)。\x0d\④ 密鑰加層運算(addround)是將圈密鑰狀態中的對應字節按位“異或”。\x0d\\x0d\⑤ 根據線性變化的性質[1],解密運算是加密變化的逆變化。

  • 上一篇:編程貓無限
  • 下一篇:Java形態學編程
  • copyright 2024編程學習大全網