導航:首頁 > 源碼編譯 > aes演算法介紹

aes演算法介紹

發布時間:2023-07-06 02:56:20

⑴ 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)中的一個多項式,接著將此多項式和一個固定的多項式在molo 下相乘。此步驟亦可視為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加密標准又稱為高級加密標准Rijndael加密法,是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。AES的基本要求是,採用對稱分組密碼體制,密鑰長度可以為128、192或256位,分組長度128位,演算法應易在各種硬體和軟體上實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選演算法

⑶ 對稱加密演算法AES

AES(Advanced Encryption Standard),高級加密標准,對稱演算法,是下一代的加密演算法標准,速度快,安全級別高,在21世紀AES 標準的一個實現是 Rijndael 演算法;
AES加密演算法是密碼學中的高級加密標准,該加密演算法採用對稱分組密碼體制,密鑰長度的最少支持為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現。這種加密演算法是美國聯邦政府採用的區塊加密標准,這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。
它適用於敏感內容進行加密傳輸,防止被竊取。

⑷ 什麼是AES演算法

加密演算法分為單向加密和雙向加密。
單向加密 包括 MD5 , SHA 等摘要演算法。單向加密演算法是不可逆的,也就是無法將加密後的數據恢復成原始數據,除非採取碰撞攻擊和窮舉的方式。像是銀行賬戶密碼的存儲,一般採用的就是單向加密的方式。

雙向加密 是可逆的,存在密文的密鑰,持有密文的一方可以根據密鑰解密得到原始明文,一般用於發送方和接收方都能通過密鑰獲取明文的情況。雙向加密包括對稱加密和非對稱加密。對稱加密包括 DES 加密, AES 加密等,非對稱加密包括 RSA 加密, ECC 加密。
AES 演算法全稱 Advanced Encryption Standard ,是 DES 演算法的替代者,也是當今最流行的對稱加密演算法之一。

要想學習AES演算法,首先要弄清楚三個基本的概念:密鑰、填充、模式。

密鑰是 AES 演算法實現加密和解密的根本。對稱加密演算法之所以對稱,是因為這類演算法對明文的加密和解密需要使用同一個密鑰。

AES支持三種長度的密鑰:

128位,192位,256位

平時大家所說的AES128,AES192,AES256,實際上就是指的AES演算法對不同長度密鑰的使用。從安全性來看,AES256安全性最高。從性能來看,AES128性能最高。本質原因是它們的加密處理輪數不同。

要想了解填充的概念,我們先要了解AES的分組加密特性。AES演算法在對明文加密的時候,並不是把整個明文一股腦加密成一整段密文,而是把明文拆分成一個個獨立的明文塊,每一個明文塊長度128bit。

這些明文塊經過AES加密器的復雜處理,生成一個個獨立的密文塊,這些密文塊拼接在一起,就是最終的AES加密結果。

但是這里涉及到一個問題:

假如一段明文長度是192bit,如果按每128bit一個明文塊來拆分的話,第二個明文塊只有64bit,不足128bit。這時候怎麼辦呢?就需要對明文塊進行填充(Padding)。AES在不同的語言實現中有許多不同的填充演算法,我們只舉出集中典型的填充來介紹一下。

不做任何填充,但是要求明文必須是16位元組的整數倍。

如果明文塊少於16個位元組(128bit),在明文塊末尾補足相應數量的字元,且每個位元組的值等於缺少的字元數。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6個位元組,則補全為{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}

如果明文塊少於16個位元組(128bit),在明文塊末尾補足相應數量的位元組,最後一個字元值等於缺少的字元數,其他字元填充隨機數。

比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6個位元組,則可能補全為{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}

需要注意的是,如果在AES加密的時候使用了某一種填充方式,解密的時候也必須採用同樣的填充方式。

AES的工作模式,體現在把明文塊加密成密文塊的處理過程中。AES加密演算法提供了五種不同的工作模式:

ECB、CBC、CTR、CFB、OFB

模式之間的主題思想是近似的,在處理細節上有一些差別。我們這一期只介紹各個模式的基本定義。

電碼本模式 Electronic Codebook Book

密碼分組鏈接模式 CipherBlock Chaining

計算器模式 Counter

密碼反饋模式 CipherFeedBack

輸出反饋模式 OutputFeedBack

如果在AES加密的時候使用了某一種工作模式,解密的時候也必須採用同樣的工作模式。

AES加密主要包括兩個步驟: 密鑰擴展 明文加密

密鑰擴展過程說明(密鑰為16位元組):

函數g的流程說明:

輪常量(Rcon)是一個字,最右邊三個位元組總為0。因此字與Rcon相異或,其結果只是與該字最左的那個位元組相異或。每輪的輪常量不同,定位為Rcon[j] = (RC[j], 0, 0, 0)。(RC是一維數組)
RC生成函數:RC[1] = 1, RC[j] = 2 * RC[j – 1]。
因為16位元組密鑰的只進行10輪的擴展,所以最後生成的RC[j]的值按16進製表示為:

十輪的密鑰擴展後,就能生成44個字大小的擴展密鑰。擴展後的密鑰將用於AES對明文的加密過程。

S盒是16×16個位元組組成的矩陣,行列的索引值分別從0開始,到十六進制的F結束,每個位元組的范圍為(00-FF)。

進行位元組代替的時候,把狀態中的每個位元組分為高4位和低4位。高4位作為行值,低4位作為列值,以這些行列值作為索引從S盒的對應位置取出元素作為輸出,如下圖所示:

S盒的構造方式如下:
(1) 按位元組值得升序逐行初始化S盒。在行y列x的位元組值是{yx}。
(2) 把S盒中的每個位元組映射為它在有限域GF中的逆;{00}映射為它自身{00}。
(3) 把S盒中的每個位元組的8個構成位記為(b7, b6, b5, b4, b3, b2, b1)。對S盒的每個位元組的每個位做如下的變換:

ci指的是值為{63}的位元組c的第i位。
解密過程逆位元組代替使用的是逆S盒,構造方式為

位元組d={05}。

逆向行移位將狀態中後三行執行相反方向的移位操作,如第二行向右循環移動一個位元組,其他行類似。

要注意,圖示的矩陣的乘法和加法都是定義在GF(2^8)上的。
逆向列混淆原理如下:

輪密鑰加後的分組再進行一次輪密鑰加就能恢復原值.所以,只要經過密鑰擴展和明文加密,就能將明文加密成密文,進行解密的時候,只需要進行逆向變換即可。

圖[AES加密演算法的流程]中還需要注意,明文輸入到輸入狀態後,需要進行一輪的輪密鑰加,對輸入狀態進行初始化。 前9輪的加密過程,都需要進行位元組替代、行移位、列混淆和輪密鑰加,但是第10輪則不再需要進行列混淆。

進行解密的時候,需要進行逆向位元組替代,逆向行移位、逆向列混淆和輪密鑰加。

⑸ 加密演算法之AES

AES採用分組密碼體制,首先將明文分成以16個位元組長度為基準位元組段,如果最後不足16位元組則同樣使用填充。然後分組對每段位元組段進行加密得到密文,再將最後得到的密文拼接在一起形成最終的密文。AES演算法的密鑰長度可以分為128位,256位,512位。

整個加密過程如下圖所示:

功能實現,在客戶端中將明文進行AES加密後通過TCP鏈接發送至另一個客戶端,另一端通過密鑰對密文進行解密得到明文

⑹ 簡述aes演算法的加密過程

AES加密過程涉及到 4 種操作,分別是位元組替代行移位列混淆輪密鑰加

1.位元組替換:位元組代替的主要功能是通過S盒完成一個位元組到另外一個位元組的映射。

2.行移位:行移位的功能是實現一個4x4矩陣內部位元組之間的置換。

4.輪密鑰加:加密過程中,每輪的輸入與輪密鑰異或一次(當前分組和擴展密鑰的一部分進行按位異或);因為二進制數連續異或一個數結果是不變的,所以在解密時再異或上該輪的密鑰即可恢復輸入。

5.密鑰擴展:其復雜性是確保演算法安全性的重要部分。當分組長度和密鑰長度都是128位時,AES的加密演算法共迭代10輪,需要10個子密鑰。AES的密鑰擴展的目的是將輸入的128位密鑰擴展成11個128位的子密鑰。AES的密鑰擴展演算法是以字為一個基本單位(一個字為4個位元組),剛好是密鑰矩陣的一列。因此4個字(128位)密鑰需要擴展成11個子密鑰,共44個字。

⑺ aes演算法步驟

aes演算法由四個不同的變換組成,包括一個置換和三個替代:

位元組代替(SubBytes):用一個S盒完成分組的位元組到位元組的代替。

行移位(ShiftRows):一個簡單的置換。

列混淆(MixColumns):利用域GF(28)上的算術特性的一個代替。

輪密鑰加(AddRoundKey):當前分組和擴展密鑰的一部分進行按位XOR(異或)。

輸入的密鑰被擴展成由44個32位子所組成的數組w[i],由上圖可知,每輪有四個不同的字(128位)作為該輪到密鑰。

對加密和解密的操作,演算法由輪密鑰加開始,接著執行9輪迭代運算,每輪都包含所有4個階段的代替,接著是第10輪的三個階段。

僅僅在輪密鑰加階段使用密鑰。由於這個原因,該演算法以輪密鑰加開始,以輪密鑰加結束。

閱讀全文

與aes演算法介紹相關的資料

熱點內容
安卓轉移到ios王者榮耀怎麼登 瀏覽:954
工業壓縮機品牌 瀏覽:181
蘋果系統怎麼更改app的圖標 瀏覽:667
泰劇女同電影 瀏覽:435
人造變異女的電影 瀏覽:237
懷舊經典老錄像片 瀏覽:593
和利時功能塊怎麼加密 瀏覽:30
宣萱電影好看 瀏覽:568
韓國純真時代動態圖 瀏覽:100
關於男主有個能操控別人 瀏覽:303
怎麼測試doh加密 瀏覽:210
歐美 小說 圖片 瀏覽:908
西安程序員未來的發展趨勢 瀏覽:173
叫阿能的電影 瀏覽:261
客車購票小程序源碼 瀏覽:645
程序員用數據表白靈魂伴侶 瀏覽:485
spin命令行 瀏覽:376
百合txt下載 瀏覽:61
房貸結清合同是不是解壓了 瀏覽:109
小說資源鏈接 瀏覽:447