當前位置:首頁 » 操作系統 » aes解密演算法

aes解密演算法

發布時間: 2022-06-17 23:59:41

『壹』 DES和AES演算法的比較,各自優缺點有哪些

一、數據加密標准不同

1、DES演算法的入口參數有三個:Key、Data、Mode。

其中Key為7個位元組共56位,是DES演算法的工作密鑰;Data為8個位元組64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。

2、AES的基本要求是,採用對稱分組密碼體制,密鑰的長度最少支持為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現。

因此AES的密鑰長度比DES大, 它也可設定為32比特的任意倍數,最小值為128比特,最大值為256 比特,所以用窮舉法是不可能破解的。

二、運行速度不同

1、作為分組密碼,DES的加密單位僅有64位二進制,這對於數據傳輸來說太小,因為每個分組僅含8個字元,而且其中某些位還要用於奇偶校驗或其他通訊開銷。處理速度慢、加密耗時

2、AES對內存的需求非常低,運算速度快,在有反饋模式、無反饋模式的軟硬體中,Rijndael都表現出非常好的性能。

三、適用范圍不同

1、數據加密標准,速度較快,適用於加密大量數據的場合。DES在安全上是脆弱的,但由於快速DES晶元的大量生產,使得DES仍能暫時繼續使用,為提高安全強度,通常使用獨立密鑰的三級DES

2、AES 適用於8位的小型單片機或者普通的32位微處理器,並且適合用專門的硬體實現,硬體實現能夠使其吞吐量(每秒可以到達的加密/解密bit數)達到十億量級。同樣,其也適用於RFID系統。

『貳』 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演算法步驟

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

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

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

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

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

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

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

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

『肆』 密碼學AES演算法解題

AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高。 用AES加密2000年10月,NIST(美國國家標准和技術協會)宣布通過從15種候選演算法中選出的一項新的密匙加密標准。Rijndael被選中成為將來的AES。Rijndael是在1999年下半年,由研究員Joan Daemen 和 Vincent Rijmen 創建的。AES正日益成為加密各種形式的電子數據的實際標准。 美國標准與技術研究院(NIST)於2002年5月26日制定了新的高級加密標准(AES)規范。 演算法原理 AES演算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。AES使用幾種不同的方法來執行排列和置換運算。AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,並且用128位(16位元組)分組加密和解密數據。與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換和替換輸入數據。密碼學簡介據記載,公元前400年,古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用「恩尼格瑪」密碼機,密碼學在戰爭中起著非常重要的作用。 隨著信息化和數字化社會的發展,人們對信息安全和保密的重要性認識不斷提高,於是在1997年,美國國家保准局公布實施了「美國數據加密標准(DES)」,民間力量開始全面介入密碼學的研究和應用中,採用的加密演算法有DES、RSA、SHA等。隨著對加密強度的不斷提高,近期又出現了AES、ECC等。 使用密碼學可以達到以下目的:保密性:防止用戶的標識或數據被讀取。數據完整性:防止數據被更改。身份驗證:確保數據發自特定的一方。

『伍』 什麼是AES演算法


1997年1月2日,美國國家標准和技術研究院(National Institute of Standard and Technology,NIST)宣布徵集一個新的對稱密鑰分組密碼演算法作為新的加密標准,以取代即將過期的DES。新的演算法被命名為高級加密標准(Advanced)。1997年9月12日發布了徵集演算法的正式公告,要求AES具有128位分組長度,支持128、192和256位的密鑰長度。比三重DES有效,至少要與三重DES一樣安全,而且要求AES能在全世界范圍內免費得到。
1998年8月20日,NIST宣布接受15個演算法為AES的候選演算法,並提交全世界的密碼學界協助分析這些演算法。1999年8月,確定了5個候選決賽演算法,分別是MARS、RC6、Rijndael、Serpent和Twofish。經過對決賽演算法的進一步分析,2000年10月NIST決定將Rijndael作為AES,並於2002年5月26日制定了AES的規范。



Rijndael是由比利時的兩位密碼學家Daemen和Rijment共同設計的。Rijndael演算法是一個迭代型分組密碼,其分組長度和密鑰長度都可變,各自可以為128比特、192比特和256比特。Rijndael對明文以位元組為單位進行處理。以128位的分組、128位密鑰的情況為例,首先將明文按位元組分成列組,將明文的前4個位元組組成一列,接下來的4個位元組組成第二列,後面的位元組依次組成第三列和第四列,這樣就組成了一個4×4的矩陣,如圖所示。

這樣就完成了AES演算法。(本文為原創,轉載需向我請求許可權,謝謝~)

『陸』 通過Java如何實現AES密碼演算法

1. AES加密字元串

public static byte[] encrypt(String content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");// 創建AES的Key生產者

kgen.init(128, new SecureRandom(password.getBytes()));// 利用用戶密碼作為隨機數初始化出
// 128位的key生產者
//加密沒關系,SecureRandom是生成安全隨機數序列,password.getBytes()是種子,只要種子相同,序列就一樣,所以解密只要有password就行

SecretKey secretKey = kgen.generateKey();// 根據用戶密碼,生成一個密鑰

byte[] enCodeFormat = secretKey.getEncoded();// 返回基本編碼格式的密鑰,如果此密鑰不支持編碼,則返回
// null。

SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 轉換為AES專用密鑰

Cipher cipher = Cipher.getInstance("AES");// 創建密碼器

byte[] byteContent = content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化為加密模式的密碼器

byte[] result = cipher.doFinal(byteContent);// 加密

return result;

} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
2. AES解密
public static byte[] decrypt(byte[] content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");// 創建AES的Key生產者
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();// 根據用戶密碼,生成一個密鑰
byte[] enCodeFormat = secretKey.getEncoded();// 返回基本編碼格式的密鑰
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");// 轉換為AES專用密鑰
Cipher cipher = Cipher.getInstance("AES");// 創建密碼器
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化為解密模式的密碼器
byte[] result = cipher.doFinal(content);
return result; // 明文

} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}

『柒』 des和aes 加解密演算法具體步驟有例子最好

隨著計算機網路和計算機通訊技術的發展,計算機密碼學得到前所未有的重視並迅速普及和發展起來。由於密碼系統的各種性能主要由密碼演算法所決定,不同的演算法決定了不同的密碼體制,而不同的密碼體制又有著不同的優缺點:有的密碼演算法高速簡便,但加解密密鑰相同,密鑰管理困難;有的密碼演算法密鑰管理方便安全,但計算開銷大、處理速度慢。基於此,本文針對兩種典型的密碼演算法DES和RSA的特點進行討論分析,並提出一種以這兩種密碼體制為基礎的混合密碼系統,來實現優勢互補。
1 密碼系統簡介
1.1 密碼系統分類
密碼系統從原理上可分為兩大類,即單密鑰系統和雙密鑰系統。單密鑰系統又稱為對稱密碼系統,其加密密鑰和解密密鑰或者相同,或者實質上相同,即易於從一個密鑰得出另一個,如圖1所示。雙密鑰系統又稱為公開密鑰密碼系統,它有兩個密鑰,一個是公開的,用K1表示,誰都可以使用;另一個是私人密鑰,用K2表示,只由採用此系統的人掌握。從公開的密鑰推不出私人密鑰,如圖2所示。

1.2 兩種密碼系統分析
1.2.1 對稱密碼系統(單鑰密碼系統)
對稱密碼系統中加密和解密均採用同一把密鑰,而且通信雙方必須都要獲得這把密鑰。這就帶來了一系列問題。首先,密鑰本身的發送就存在著風險,如果在發送中丟失,接受方就不可能重新得到密文的內容;其次,多人通信時密鑰的組合的數量會出現爆炸性的膨脹,N個人兩兩通信,需要N*(N-1)/2把密鑰,增加了分發密鑰的代價和難度;最後,由於通信雙方必須事先統一密鑰,才能發送保密的信息,這樣,陌生人之間就無法發送密文了。
1.2.2 公開密鑰密碼系統(雙鑰密碼系統)
公開密鑰密碼系統中,收信人生成兩把數學上關聯但又不同的公鑰和私鑰,私鑰自己保存,把公鑰公布出去,發信人使用收信人的公鑰對通信文件進行加密,收信人收到密文後用私鑰解密。公開密鑰密碼系統的優勢在於,首先,用戶可以把用於加密的鑰匙公開地發給任何人,並且除了持有私有密鑰的收信人之外,無人能解開密文;其次,用戶可以把公開鑰匙發表或刊登出來,使得陌生人之間可以互發保密的通信;最後,公開密鑰密碼系統提供了數字簽字的公開鑒定系統,而這是對稱密碼系統不具備的。
1.3 典型演算法
對稱密碼系統的演算法有DES,AES,RC系列,DEA等,公開密鑰密碼系統的演算法有RSA,Diffie-Hellman, Merkle-Hellman等。
2 DES演算法
DES (Data Encryption Standard,數據加密標准)是一個分組加密演算法,它以64 bit位(8 byte)為分組對數據加密,其中有8 bit奇偶校驗,有效密鑰長度為56 bit。64 位一組的明文從演算法的一端輸入,64 位的密文從另一端輸出。DES演算法的加密和解密用的是同一演算法,它的安全性依賴於所用的密鑰。DES 對64位的明文分組進行操作,通過一個初始置換,將明文分組成左半部分和右半部分,各32位長。然後進行16輪完全相同的運算,這些運算被稱為函數f,在運算過程中數據與密鑰結合。經過16輪後,左、右半部分合在一起經過一個末置換(初始置換的逆置換),完成演算法。在每一輪中,密鑰位移位,然後再從密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作與48位密鑰結合,通過8個s盒將這48位替代成新的32位數據,再將其置換一次。這些運算構成了函數f。然後,通過另一個異或運算,函數f輸出與左半部分結合,其結果即成為新的右半部分, 原來的右半部分成為新的左半部分。將該操作重復16次,實現DES的16輪運算。
3 RSA演算法
RSA演算法使用兩個密鑰,一個公共密鑰,一個私有密鑰。如用其中一個加密,則可用另一個解密。密鑰長度從40到2048 bit可變。加密時把明文分成塊,塊的大小可變,但不能超過密鑰的長度,RSA演算法把每一塊明文轉化為與密鑰長度相同的密文塊。密鑰越長,加密效果越好,但加密解密的開銷也大,所以要在安全與性能之間折衷考慮,一般64位是較合適的。RSA演算法利用了陷門單向函數的一種可逆模指數運算,描述如下:(1)選擇兩個大素數p和q;(2)計算乘積n=pq和φ(n)=(p-1)(q-1);(3)選擇大於1小於φ(n)的隨機整數e,使得
gcd(e,φ(n))=1;(4)計算d使得de=1modφ(n);(5)對每一個密鑰k=(n,p,q,d,e),定義加密變換為Ek(x)=xemodn,解密變換為Dk(y)=ydmodn,這里x,y∈Zn;(6)以{e,n}為公開密鑰,{p,q,d}為私有密鑰。
4 基於DES和RSA的混合密碼系統
4.1 概述
混合密碼系統充分利用了公鑰密碼和對稱密碼演算法的優點,克服其缺點,解決了每次傳送更新密鑰的問題。發送者自動生成對稱密鑰,用對稱密鑰按照DES演算法加密發送的信息,將生成的密文連同用接受方的公鑰按照RSA演算法加密後的對稱密鑰一起傳送出去。收信者用其密鑰按照RSA演算法解密被加密的密鑰來得到對稱密鑰,並用它來按照DES演算法解密密文。
4.2 具體實現步驟
(1)發信方選擇對稱密鑰K(一般為64位,目前可以達到192位)
(2)發信方加密消息:對明文按64位分組進行操作,通過一個初始置換,將明文分組成左半部分和右半部分。然後進行16輪完全相同的運算,最後,左、右半部分合在一起經過一個末置換(初始置換的逆置換),完成演算法。在每一輪中,密鑰位移位,然後再從密鑰的56位中選出48位。通過一個擴展置換將數據的右半部分擴展成48位,並通過一個異或操作與48位密鑰結合,通過8個S盒將這48位替代成新的32位數據,再將其置換一次。然後通過另一個異或運算,輸出結果與左半部分結合,其結果即成為新的右半部分,原來的右半部分成為新的左半部分。如圖3所示。

(3)收信方產生兩個足夠大的強質數p、q,計算n=p×q和z=(p-1)×(q-1),然後再選取一個與z互素的奇數e,從這個e值找出另一個值d,使之滿足e×d=1 mod (z)條件。以兩組數(n,e) 和 (n,d)分別作為公鑰和私鑰。收信方將公鑰對外公開,從而收信方可以利用收信方的公鑰對 (1)中產生的對稱密鑰的每一位x進行加密變換Ek(x)=xemodn;
(4)發信方將步驟(2)和(3)中得到的消息的密文和對稱密鑰的密文一起發送給收信方;
(5)收信方用(3)中得到的私鑰來對對稱密鑰的每一位y進行解密變換Dk(y)=ydmodn,從而得到(1)中的K;
(6)收信方用對稱密鑰K和DES演算法的逆步驟來對消息進行解密,具體步驟和(2)中恰好相反,也是有16輪迭代。
(7)既可以由收信方保留對稱密鑰K來進行下一次數據通信,也可以由收信方產生新的對稱密鑰,從而使K作廢。
4.3 兩點說明
4.3.1 用公鑰演算法加密密鑰
在混合密碼系統中,公開密鑰演算法不用來加密消息,而用來加密密鑰,這樣做有兩個理由:第一,公鑰演算法比對稱演算法慢,對稱演算法一般比公鑰演算法快一千倍。計算機在大約15年後運行公開密鑰密碼演算法的速度才能比得上現在計算機運行對稱密碼的速度。並且,隨著帶寬需求的增加,比公開密鑰密碼處理更快的加密數據要求越來越多。第二,公開密鑰密碼系統對選擇明文攻擊是脆弱的。密碼分析者只需要加密所有可能的明文,將得到的所有密文與要破解的密文比較,這樣,雖然它不可能恢復解密密鑰,但它能夠確定當前密文所對應的明文。
4.3.2 安全性分析
如果攻擊者無論得到多少密文,都沒有足夠的信息去恢復明文,那麼該密碼系統就是無條件安全的。在理論上,只有一次一密的系統才能真正實現這一點。而在本文所討論的混合密碼系統中,發信方每次可以自由選擇對稱密鑰來加密消息,然後用公鑰演算法來加密對稱密鑰,即用戶可以採用一次一密的方式來進行數據通信,達到上述的無條件安全。
5 小結
基於DES和RSA的混合密碼系統結合了公鑰密碼體制易於密鑰分配的特點和對稱密碼體制易於計算、速度快的特點,為信息的安全傳輸提供了良好的、快捷的途徑,使數據傳輸的密文被破解的幾率大大降低,從而對數據傳輸的安全性形成更有力的保障,並且發信方和收信方對密鑰的操作自由度得到了很大的發揮。

『捌』 簡述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加密中的位元組代換 行移位和列混淆在解密過程中全部被逆位元組代換 逆行移位和逆列混淆所代替,逆位元組代換用逆S盒 逆行移位向右移等等 即 AES的解密運算過程是加密運算過程的逆過程。

『拾』 aes密碼能破解嗎

密碼破解分為兩種,一是演算法破解,二是暴力破解。
演算法破解就是找到加密演算法的漏洞,進行技巧性的破解。
暴力破解是在知道加密算的情況下,用各種密碼去測試。關於暴力破解也不是真正的暴力,有很多技術巧。如有效的密碼字典就是一例。

AES目前沒有演算法浮出水面。
AES暴力破解與密碼強度(如字串的MD5值就難,簡單字串在密碼字典排序告前,相對容易一些)和計算能力有關。但AES密鑰長度太長,各種排列組合簡直是天文數字,現有能力民間單機不可能破解。當然也可能一買彩票就中大獎,但似乎比那概率小得多。

熱點內容
視窗壓縮 發布:2024-11-07 04:45:06 瀏覽:886
fc2點此訪問 發布:2024-11-07 04:45:04 瀏覽:759
上傳吊牌圖 發布:2024-11-07 04:38:48 瀏覽:918
密碼學什麼概念 發布:2024-11-07 04:38:48 瀏覽:847
linuxpdf轉word 發布:2024-11-07 04:37:06 瀏覽:212
安卓手機為什麼用ufs 發布:2024-11-07 04:15:09 瀏覽:558
資料庫刪除所有表 發布:2024-11-07 04:13:55 瀏覽:575
新建文件夾2鏈接 發布:2024-11-07 04:12:17 瀏覽:155
mapreduce源碼分析 發布:2024-11-07 04:10:36 瀏覽:605
浪潮存儲維修維保價格 發布:2024-11-07 04:01:56 瀏覽:713