導航:首頁 > 文檔加密 > aes加密演算法的總結

aes加密演算法的總結

發布時間:2022-10-06 03:22:51

㈠ 什麼是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演算法作為DES演算法和MD5演算法的替代產品,10輪循環到目前為止還沒有被破解。一般多數人的意見是:它是目前可獲得的最安全的加密演算法。AES與目前使用廣泛的加密演算法─DES演算法的差別在於,如果一秒可以解DES,則仍需要花費1490000億年才可破解AES,由此可知AES的安全性。AES 已被列為比任何現今其它對稱加密演算法更安全的一種演算法。

㈢ aes加密演算法原理

AES是分組密鑰,演算法輸入128位數據,密鑰長度也是128位。用Nr表示對一個數據分組加密的輪數(加密輪數與密鑰長度的關系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。由於外部輸入的加密密鑰K長度有限,所以在演算法中要用一個密鑰擴展程序(Keyexpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密和解密密鑰。
1.1圈變化
AES每一個圈變換由以下三個層組成:
非線性層——進行Subbyte變換;
線行混合層——進行ShiftRow和MixColumn運算;
密鑰加層——進行AddRoundKey運算。
① Subbyte變換是作用在狀態中每個位元組上的一種非線性位元組轉換,可以通過計算出來的S盒進行映射。

② ShiftRow是一個位元組換位。它將狀態中的行按照不同的偏移量進行循環移位,而這個偏移量也是根據Nb的不同而選擇的[3]。

③ 在MixColumn變換中,把狀態中的每一列看作GF(28)上的多項式a(x)與固定多項式c(x)相乘的結果。 b(x)=c(x)*a(x)的系數這樣計算:
*運算不是普通的乘法運算,而是特殊的運算,即 b(x)=c(x)·a(x)(mod x4+1) 對於這個運算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0
其中,符號「。」表示模一個八次不可約多項式的同餘乘法[3]。

對於逆變化,其矩陣C要改變成相應的D,即b(x)=d(x)*a(x)。
④ 密鑰加層運算(addround)是將圈密鑰狀態中的對應位元組按位「異或」。

⑤ 根據線性變化的性質[1],解密運算是加密變化的逆變化。

㈣ AES加密技術

關鍵字
藍牙
流加密
分組加密
des
aes
1
引言隨著機技術的迅速,網路中的信息安全問題越來...
vba、word和資料庫的聯合編程日期:2008-04-05
01:37:06
點擊:15
好評:0
摘要
本文介紹了用vba作為開發語言,用access或foxpro作為數據...
wsdxs.cn/html/pc-theory

㈤ 加密技術02-對稱加密-AES原理

AES 全稱 Advanced Encryption Standard(高級加密標准)。它的出現主要是為了取代 DES 加密演算法的,因為 DES 演算法的密鑰長度是 56 位,因此演算法的理論安全強度是 2^56。但二十世紀中後期正是計算機飛速發展的階段,元器件製造工藝的進步使得計算機的處理能力越來越強,所以還是不能滿足人們對安全性的要求。於是 1997 年 1 月 2 號,美國國家標准技術研究所宣布希望徵集高級加密標准,用以取代 DES。AES 也得到了全世界很多密碼工作者的響應,先後有很多人提交了自己設計的演算法。最終有5個候選演算法進入最後一輪:Rijndael,Serpent,Twofish,RC6 和 MARS。最終經過安全性分析、軟硬體性能評估等嚴格的步驟,Rijndael 演算法獲勝。

AES 密碼與分組密碼 Rijndael 基本上完全一致,Rijndael 分組大小和密鑰大小都可以為 128 位、192 位和 256 位。然而 AES 只要求分組大小為 128 位,因此只有分組長度為 128 位的 Rijndael 才稱為 AES 演算法。本文只對分組大小 128 位,密鑰長度也為 128 位的 Rijndael 演算法進行分析。密鑰長度為 192 位和 256 位的處理方式和 128 位的處理方式類似,只不過密鑰長度每增加 64 位,演算法的循環次數就增加 2 輪,128 位循環 10 輪、192 位循環 12 輪、256 位循環 14 輪。

給定一個 128 位的明文和一個 128 位的密鑰,輸出一個 128 位的密文。這個密文可以用相同的密鑰解密。雖然 AES 一次只能加密 16 個位元組,但我們只需要把明文劃分成每 16 個位元組一組的塊,就可以實現任意長度明文的加密。如果明文長度不是 16 個位元組的倍數,則需要填充,目前填充方式主要是 PKCS7 / PKCS5。

下來主要分析 16 個位元組的加解密過程,下圖是 AES 演算法框架。

密鑰生成流程

G 函數

關於輪常量的生成下文會介紹。

主要作用:一是增加密鑰編排中的非線性;二是消除AES中的對稱性。這兩種屬性都是抵抗某些分組密碼攻擊必要的。

接下來詳細解釋一下幾個關鍵步驟。

明文矩陣和當前回次的子密鑰矩陣進行異或運算。

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

依次遍歷 4 * 4 的明文矩陣 P 中元素,元素高四位值為行號,低四位值為列號,然後在 S 盒中取出對應的值。

行位移操作最為簡單,它是用來將輸入數據作為一個 4 * 4 的位元組矩陣進行處理的,然後將這個矩陣的位元組進行位置上的置換。ShiftRows 子層屬於 AES 手動的擴散層,目的是將單個位上的變換擴散到影響整個狀態當,從而達到雪崩效應。它之所以稱作行位移,是因為它只在 4 * 4 矩陣的行間進行操作,每行 4 位元組的數據。在加密時,保持矩陣的第一行不變,第二行向左移動 1 個位元組、第三行向左移動 2 個位元組、第四行向左移動 3 個位元組。

列混淆層是 AES 演算法中最為復雜的部分,屬於擴散層,列混淆操作是 AES 演算法中主要的擴散元素,它混淆了輸入矩陣的每一列,使輸入的每個位元組都會影響到 4 個輸出位元組。行位移層和列混淆層的組合使得經過三輪處理以後,矩陣的每個位元組都依賴於 16 個明文位元組成可能。其實質是在有限域 GF(2^8) 上的多項式乘法運算,也稱伽羅瓦域上的乘法。

伽羅瓦域

伽羅瓦域上的乘法在包括加/解密編碼和存儲編碼中經常使用,AES 演算法就使用了伽羅瓦域 GF(2^8) 中的運算。以 2^n 形式的伽羅瓦域來說,加減法都是異或運算,乘法相對較復雜一些,下面介紹 GF(2^n) 上有限域的乘法運算。

本原多項式: 域中不可約多項式,是不能夠進行因子分解的多項式,本原多項式是一種特殊的不可約多項式。當一個域上的本原多項式確定了,這個域上的運算也就確定了,本原多項式一般通過查表可得,同一個域往往有多個本原多項式。通過將域中的元素化為多項式的形式,可以將域上的乘法運算轉化為普通的多項式乘法模以本原多項式的計算。比如 g(x) = x^3+x+1 是 GF(2^3) 上的本原多項式,那麼 GF(2^3) 域上的元素 3*7 可以轉化為多項式乘法:

乘二運算: 無論是普通計算還是伽羅瓦域上運算,乘二計算是一種非常特殊的運算。普通計算在計算機上通過向高位的移位計算即可實現,伽羅瓦域上乘二也不復雜,一次移位和一次異或即可。從多項式的角度來看,伽羅瓦域上乘二對應的是一個多項式乘以 x,如果這個多項式最高指數沒有超過本原多項式最高指數,那麼相當於一次普通計算的乘二計算,如果結果最高指數等於本原多項式最高指數,那麼需要將除去本原多項式最高項的其他項和結果進行異或。

比如:GF(2^8)(g(x) = x^8 + x^4 + x^3 + x^2 + 1)上 15*15 = 85 計算過程。

15 寫成生成元指數和異或的形式 2^3 + 2^2 + 2^1 + 1,那麼:

乘二運算計算過程:

列混淆 :就是把兩個矩陣的相乘,裡面的運算,加法對應異或運算,乘法對應伽羅瓦域 GF(2^8) 上的乘法(本原多項式為:x^8 + x^4 + x^3 + x^1 + 1)。

Galois 函數為伽羅瓦域上的乘法。

解碼過程和 DES 解碼類似,也是一個逆過程。基本的數學原理也是:一個數進行兩次異或運算就能恢復,S ^ e ^ e = S。

密鑰加法層

通過異或的特性,再次異或就能恢復原數。

逆Shift Rows層

恢復 Shift Rows層 的移動。

逆Mix Column層

通過乘上正矩陣的逆矩陣進行矩陣恢復。

一個矩陣先乘上一個正矩陣,然後再乘上他的逆矩陣,相當於沒有操作。

逆位元組代換層

通過再次代換恢復位元組代換層的代換操作。

比如:0x00 位元組的置換過程

輪常量生成規則如下:

演算法原理和 AES128 一樣,只是每次加解密的數據和密鑰大小為 192 位和 256 位。加解密過程幾乎是一樣的,只是循環輪數增加,所以子密鑰個數也要增加,最後輪常量 RC 長度增加。

㈥ 常用的加密演算法有哪些

對稱密鑰加密

對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、共享密鑰加密:這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度一般都很快。

㈦ 什麼是AES對稱加密

AES加密標准又稱為高級加密標准Rijndael加密法,是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。AES的基本要求是,採用對稱分組密碼體制,密鑰長度可以為128、192或256位,分組長度128位,演算法應易在各種硬體和軟體上實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選演算法

㈧ aes屬於哪種加密方式

aes屬於對稱加密演算法,這樣演算法最大的特點是加密的密鑰和解密的密鑰是一樣的。另外aes運算相對比較簡單,在數據流加密中應用很廣泛。

㈨ 典型加密演算法包括

1、對稱加密演算法

對稱加密演算法是指加密和解密採用相同的密鑰,是可逆的(即可解密)。AES加密演算法是密碼學中的高級加密標准,採用的是對稱分組密碼體制,密鑰長度的最少支持為128。

AES加密演算法是美國聯邦政府採用的區塊加密標准,這個標准用來替代原先的DES,已經被多方分析且廣為全世界使用。

2、非對稱加密

非對稱加密演算法,又稱為公開密鑰加密演算法。它需要兩個密鑰,一個稱為公開密鑰 (public key),即公鑰,另一個稱為私有密鑰 (private key),即私鑰。

RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;

DSA(Digital Signature Algorithm):數字簽名演算法,是一種標準的 DSS(數字簽名標准);

ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

3、Hash 演算法

Hash 演算法特別的地方在於它是一種單向演算法,用戶可以通過 Hash 演算法對目標信息生成一段特定長度的唯一的 Hash 值,卻不能通過這個 Hash 值重新獲得目標信息。因此 Hash 演算法常用在不可還原的密碼存儲、信息完整性校驗等。

㈩ 求解釋這段安卓代碼中的AES加密流程

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

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

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


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

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

閱讀全文

與aes加密演算法的總結相關的資料

熱點內容
程序員用得到數字區嗎 瀏覽:172
python求商 瀏覽:475
ipad能用c語言編譯器嗎 瀏覽:559
軟泥解壓球最新版 瀏覽:996
4萬程序員辭職創業 瀏覽:757
thinkingphp 瀏覽:595
安卓相冊移動文件夾 瀏覽:4
耳朵清潔解壓聲控99的人都睡得著 瀏覽:203
叉車出租網站源碼 瀏覽:872
共享單車的app是什麼 瀏覽:406
不帶gui的伺服器什麼意思 瀏覽:371
金剛經及PDF 瀏覽:100
php中冒號 瀏覽:356
php5432 瀏覽:350
命令在哪使用 瀏覽:170
php獲取網頁元素 瀏覽:706
為什麼需要硬體驅動編譯 瀏覽:883
pm編程怎樣看導柱孔對不對稱 瀏覽:136
農業大學選課找不到伺服器怎麼辦 瀏覽:649
路由配置網關命令 瀏覽:933