AES算法原理

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“体(state)”,其初值就是一个明文区块(矩阵中一个
元素大小就是明文区块中的一个Byte)。(Rijndael加密法因支持更大的区块,其矩阵行数可视情况增加)加密时,
各轮AES加密循环(除最后一轮外)均包含4个步骤:

矩阵中的各字节通过一个8位的S-box进行转换。这个步骤提供了加密法非线性的变换能力。S-box与GF(28)上的乘法反元素有关,已知具有良好的非线性特性。为了避免简单代数性质的攻击,S-box结合了乘法反元素及一个可逆的仿射变换矩阵建构而成。此外在建构S-box时,刻意避开了固定点与反固定点,即以S-box替换字节的结果会相当于错排的结果。AES算法中的S盒如图2.2所示
例如一个字节为0x19,经过S盒变换查找n(1,9) = 0xd4,所以就替换为0xd4。

ShiftRows描述矩阵的行操作。在此步骤中,每一行都向左循环位移某偏移量。在AES中(区块大小128位),第一行维持不变,第二行里的每个字节都向左循环移动一格。同理,第三行及第四行向左循环位移的偏移量就分别是2和3。经过ShiftRows之后,矩阵中每一竖列,都是由输入矩阵中的每个不同列中的元素组成。

在MixColumns步骤,每一列的四个字节通过线性变换互相结合。每一列的四个元素分别当作 的系数,合并即为GF(28)中的一个多项式,接着将此多项式和一个固定的多项式在modulo 下相乘。此步骤亦可视为Rijndael有限域之下的矩阵乘法。MixColumns函数接受4个字节的输入,输出4个字节,每一个输入的字节都会对输出的四个字节造成影响。因此ShiftRows和MixColumns两步骤为这个密码系统提供了扩散性。

AES算法利用外部输入密钥K(密钥串的字数为Nk),通过密钥的扩展程序得到共计4(Nr+1)字的扩展密钥。它涉及如下三个模块:
(1)位置变换(rotword)——把一个4字节的序列[A,B,C,D]变化成[B,C,D,A];
(2)S盒变换(subword)——对一个4字节进行S盒代替;
(3)变换Rcon[i]——Rcon[i]表示32位比特字[xi-1,00,00,00]。这里的x是(02),如 Rcon[1]=[01000000];Rcon[2]=[02000000];Rcon[3]=[04000000]……   
扩展密钥的生成:扩展密钥的前Nk个字就是外部密钥K;以后的字W[[i]]等于它前一个字W[[i-1]]与前第Nk个字W[[i-Nk]]的“异或”,即W[[i]]=W[[i-1]]W[[i- Nk]]。但是若i为Nk的倍数,则W[i]=W[i-Nk]Subword(Rotword(W[[i-1]]))Rcon[i/Nk]。

  • AES鍔犲瘑绠楁硶鍘熺悊
    绛旓細AES鏄垎缁勫瘑閽ワ紝绠楁硶杈撳叆128浣嶆暟鎹紝瀵嗛挜闀垮害涔熸槸128浣嶃傜敤Nr琛ㄧず瀵逛竴涓暟鎹垎缁勫姞瀵嗙殑杞暟锛堝姞瀵嗚疆鏁颁笌瀵嗛挜闀垮害鐨勫叧绯诲琛1鎵鍒楋級銆傛瘡涓杞兘闇瑕佷竴涓笌杈撳叆鍒嗙粍鍏锋湁鐩稿悓闀垮害鐨勬墿灞曞瘑閽xpandedkey(i)鐨勫弬涓庛傜敱浜庡閮ㄨ緭鍏ョ殑鍔犲瘑瀵嗛挜K闀垮害鏈夐檺,鎵浠ュ湪绠楁硶涓鐢ㄤ竴涓瘑閽ユ墿灞曠▼搴(Keyexpansion)鎶婂閮ㄥ瘑閽...
  • AES绠楁硶鍘熺悊
    绛旓細AES绠楁硶涓殑S鐩掑鍥2.2鎵绀 渚嬪涓涓瓧鑺備负0x19锛岀粡杩嘢鐩掑彉鎹㈡煡鎵緉(1,9) = 0xd4,鎵浠ュ氨鏇挎崲涓0xd4銆係hiftRows鎻忚堪鐭╅樀鐨勮鎿嶄綔銆傚湪姝ゆ楠や腑锛屾瘡涓琛岄兘鍚戝乏寰幆浣嶇Щ鏌愬亸绉婚噺銆傚湪AES涓紙鍖哄潡澶у皬128浣嶏級锛岀涓琛岀淮鎸佷笉鍙橈紝绗簩琛岄噷鐨勬瘡涓瓧鑺傞兘鍚戝乏寰幆绉诲姩涓鏍笺傚悓鐞嗭紝绗笁琛屽強绗洓琛屽悜宸﹀惊鐜...
  • 瀵嗙爜瀛﹀熀纭(浜):瀵圭О鍔犲瘑
    绛旓細鍥犱负RSA涓嶇敤浼犻掔閽ワ紝鍔犲瘑閫熷害鎱紝鎵浠ヤ竴鑸娇鐢≧SA鍔犲瘑AES涓攣浣跨敤鐨勭閽ュ悗锛屽啀浼犻掔閽ワ紝淇濊瘉绉橀挜鐨勫畨鍏ㄣ傜閽ュ畨鍏ㄤ紶閫掓垚鍔熷悗锛屼竴鐩翠娇鐢ˋES瀵逛細璇濅腑鐨勪俊鎭繘琛屽姞瀵嗭紝浠ユ鏉ヨВ鍐矨ES鍜孯SA鐨勭己鐐瑰苟瀹岀編鍙戞尌涓よ呯殑浼樼偣锛屽叾涓浉瀵圭粡鍏哥殑渚嬪瓙灏辨槸HTTPS鍔犲瘑锛屽悗鏂囦細涓撻棬鐮旂┒銆傛湰鏂囬拡瀵笶CB妯″紡涓嬬殑AES绠楁硶杩涜澶ф璁茶В...
  • 鍔犲瘑绠楁硶涔AES
    绛旓細AES閲囩敤鍒嗙粍瀵嗙爜浣撳埗锛岄鍏堝皢鏄庢枃鍒嗘垚浠16涓瓧鑺傞暱搴︿负鍩哄噯瀛楄妭娈碉紝濡傛灉鏈鍚庝笉瓒16瀛楄妭鍒欏悓鏍蜂娇鐢ㄥ~鍏呫傜劧鍚庡垎缁勫姣忔瀛楄妭娈佃繘琛屽姞瀵嗗緱鍒板瘑鏂囷紝鍐嶅皢鏈鍚庡緱鍒扮殑瀵嗘枃鎷兼帴鍦ㄤ竴璧峰舰鎴愭渶缁堢殑瀵嗘枃銆AES绠楁硶鐨勫瘑閽ラ暱搴﹀彲浠ュ垎涓128浣嶏紝256浣嶏紝512浣嶃傛暣涓姞瀵嗚繃绋嬪涓嬪浘鎵绀:鍔熻兘瀹炵幇锛屽湪瀹㈡埛绔腑灏嗘槑鏂囪繘琛孉ES鍔犲瘑...
  • 瀵嗙爜瀛AES绠楁硶瑙i
    绛旓細绠楁硶鍘熺悊 AES绠楁硶鍩轰簬鎺掑垪鍜岀疆鎹㈣繍绠銆傛帓鍒楁槸瀵规暟鎹噸鏂拌繘琛屽畨鎺掞紝缃崲鏄皢涓涓暟鎹崟鍏冩浛鎹负鍙︿竴涓侫ES浣跨敤鍑犵涓嶅悓鐨勬柟娉曟潵鎵ц鎺掑垪鍜岀疆鎹㈣繍绠椼侫ES鏄竴涓凯浠g殑銆佸绉板瘑閽ュ垎缁勭殑瀵嗙爜锛屽畠鍙互浣跨敤128銆192鍜256浣嶅瘑閽ワ紝骞朵笖鐢128浣嶏紙16瀛楄妭锛夊垎缁勫姞瀵嗗拰瑙e瘑鏁版嵁銆備笌鍏叡瀵嗛挜鍔犲瘑浣跨敤瀵嗛挜瀵逛笉鍚岋紝瀵圭О瀵...
  • 绠杩aes绠楁硶鐨勫姞瀵嗚繃绋
    绛旓細4.杞瘑閽ュ姞锛氬姞瀵嗚繃绋嬩腑锛屾瘡杞殑杈撳叆涓庤疆瀵嗛挜寮傛垨涓娆★紙褰撳墠鍒嗙粍鍜屾墿灞曞瘑閽ョ殑涓閮ㄥ垎杩涜鎸変綅寮傛垨锛夛紱鍥犱负浜岃繘鍒舵暟杩炵画寮傛垨涓涓暟缁撴灉鏄笉鍙樼殑锛屾墍浠ュ湪瑙e瘑鏃跺啀寮傛垨涓婅杞殑瀵嗛挜鍗冲彲鎭㈠杈撳叆銆5.瀵嗛挜鎵╁睍锛氬叾澶嶆潅鎬ф槸纭繚绠楁硶瀹夊叏鎬х殑閲嶈閮ㄥ垎銆傚綋鍒嗙粍闀垮害鍜屽瘑閽ラ暱搴﹂兘鏄128浣嶆椂锛AES鐨勫姞瀵嗙畻娉曞叡杩唬10...
  • 浠涔堟槸RC4銆丷C5銆AES?
    绛旓細AES绠楁硶涓昏鍖呮嫭涓変釜鏂归潰锛氳疆鍙樺寲銆佸湀鏁板拰瀵嗛挜鎵╁睍銆傛湰鏂囦互128涓轰緥锛屼粙缁嶇畻娉曠殑鍩烘湰鍘熺悊锛涚粨鍚圓VR姹囩紪璇█锛屽疄鐜伴珮绾ф暟鎹姞瀵绠楁硶AES銆侫ES鏄垎缁勫瘑閽ワ紝绠楁硶杈撳叆128浣嶆暟鎹紝瀵嗛挜闀垮害涔熸槸128浣嶃傜敤Nr琛ㄧず瀵逛竴涓暟鎹垎缁勫姞瀵嗙殑杞暟锛堝姞瀵嗚疆鏁颁笌瀵嗛挜闀垮害鐨勫叧绯诲琛1鎵鍒楋級銆傛瘡涓杞兘闇瑕佷竴涓笌杈撳叆鍒嗙粍鍏锋湁...
  • AES鍔犲瘑绠楁硶鎬庢牱杩涜鏀硅繘
    绛旓細AES鍔犲瘑绠楁硶涓昏姝ラ 1.1 AES绠楁硶鏁翠綋鎻忚堪 l 缁欏畾涓涓槑鏂噚锛屽皢State鍒濆鍖栦负x锛屽苟杩涜AddRoundKey鎿嶄綔锛屽皢RoundKey涓嶴tate寮傛垨銆俵 瀵瑰墠Nr-1杞腑鐨勬瘡涓杞紝鐢⊿鐩掑杩涜涓娆′唬鎹㈡搷浣滐紝绉颁负SubBytes锛涘State鍋氫竴缃崲ShiftRows锛涘啀瀵筍tate鍋氫竴娆℃搷浣淢ixColumns锛涚劧鍚庤繘琛孉ddRoundKey鎿嶄綔銆俵 渚濇杩涜...
  • Advanced Encryption Standard(AES) 鍔犲瘑绠楁硶绠浠
    绛旓細AES鏄吀鍨嬬殑瀵圭О鍔犲瘑绠楁硶锛屽簲鐢ㄥ箍娉涖傛暟鎹彂淇℃柟灏嗘槑鏂囧拰鍔犲瘑瀵嗛挜涓璧风粡杩囩壒娈婂姞瀵嗙畻娉曞鐞嗗悗锛屼娇鍏跺彉鎴愬鏉傜殑鍔犲瘑瀵嗘枃鍙戦佸嚭鍘汇傛敹淇℃柟鏀跺埌瀵嗘枃鍚庯紝鑻ユ兂瑙h鍘熸枃锛屽垯闇瑕佷娇鐢ㄥ姞瀵嗙敤杩囩殑瀵嗛挜鍙婄浉鍚岀畻娉曠殑閫嗙畻娉曞瀵嗘枃杩涜瑙e瘑锛屾墠鑳戒娇鍏舵仮澶嶆垚鍙鏄庢枃銆傚湪瀵圭О鍔犲瘑绠楁硶涓紝浣跨敤鐨勫瘑閽ュ彧鏈変竴涓紝鍙戞敹淇″弻鏂归兘...
  • 鍔犲瘑鎶鏈06-鍔犲瘑鎬荤粨
    绛旓細鍘熺悊璇峰弬鑰: 鍔犲瘑鎶鏈02-瀵圭О鍔犲瘑-AES鍘熺悊 绠楁硶瀵规瘮 鍏挜瀵嗙爜鏄竴绉嶇敤涓嶅悓鐨勫瘑閽ヨ繘琛屽姞瀵嗗拰瑙e瘑鐨勬妧鏈,鍜屽绉板瘑鐮佷竴鏍风敤浜庣‘淇濇秷鎭殑鏈哄瘑鎬с備娇鐢ㄦ渶骞挎硾鐨勪竴绉嶅叕閽ュ瘑鐮佺畻娉曟槸 RAS銆傚拰瀵圭О瀵嗙爜鐩告瘮,鍏挜瀵嗙爜鐨勯熷害闈炲父鎱,鍥犳涓鑸兘浼氬拰瀵圭О瀵嗙爜涓璧风粍鎴愭贩鍚堝瘑鐮佺郴缁熸潵浣跨敤銆傚叕閽ュ瘑鐮佽兘澶熻В鍐冲绉板瘑鐮佷腑鐨勫瘑閽ヤ氦鎹㈤棶棰...
  • 扩展阅读:aes解密在线工具 ... des算法简易流程 ... aes加密原理 ... aes加密查表实现 ... java aes加密算法 ... tkip+aes和aes哪个好 ... aes-128-cbc ... 简述aes加密过程 ... aes算法是对称加密算法吗 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网