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

aes演算法key

發布時間:2022-12-11 03:43:28

1. 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系統。

2. aes加密演算法是什麼意思

1、TKIP: Temporal Key Integrity Protocol(暫時密鑰集成協議)負責處理無線安全問題的加密部分,TKIP是包裹在已有WEP密碼外圍的一層「外殼」, 這種加密方式在盡可能使用WEP演算法的同時消除了已知的WEP缺點
2、AES:Advanced Encryption Standard(高級加密標准),是美國國家標准與技術研究所用於加密電子數據的規范,該演算法匯聚了設計簡單、密鑰安裝快、需要的內存空間少、在所有的平台上運行良好、支持並行處理並且可以抵抗所有已知攻擊等優點。 AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16位元組)分組加密和解密數據。
總而言之AES提供了比 TKIP更加高級的加密技術, 現在無線路由器都提供了這2種演算法,不過比較傾向於AES。TKIP安全性不如AES,而且在使用TKIP演算法時路由器的吞吐量會下降3成至5成,大大地影響了路由器的性能。

3. AES加密演算法支持密鑰key為多少位的

嚴格地說,AES和Rijndael加密法並不完全一樣(雖然在實際應用中二者可以互換),因為Rijndael加密法可以支持更大范圍的區塊和密鑰長度:

AES的區塊長度固定為128位,密鑰長度則可以是128,192或256位;而Rijndael使用的密鑰和區塊長度可以是32位的整數倍,以128位為下限,256位為上限。加密過程中使用的密鑰是由Rijndael密鑰生成方案產生。

(3)aes演算法key擴展閱讀

AES加密模式

對稱/分組密碼一般分為流加密(如OFB、CFB等)和塊加密(如ECB、CBC等)。對於流加密,需要將分組密碼轉化為流模式工作。對於塊加密(或稱分組加密),如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式。

優點:

1、簡單;

2、有利於並行計算;

3、誤差不會被傳送;

缺點:

1、不能隱藏明文的模式;

2、可能對明文進行主動攻擊;

3、因此,此模式適於加密小消息。

4. 通過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;
}

5. aes演算法步驟

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

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

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

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

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

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

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

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

6. Advanced Encryption Standard(AES) 加密演算法簡介

AES(The Advanced Encryption Standard)是美國國家標准與技術研究所用於加密電子數據的規范。它被預期能成為人們公認的加密包括金融、電信和政府數字信息的方法。美國國家標准與技術研究所(NIST)在2002年5月26日建立了新的高級數據加密標准(AES)規范。AES是一個新的可以用於保護電子數據的加密演算法。

1998年National Institute of Standards and Technology(NIST)開始AES第一輪分析、測試和徵集,共產生了15個候選演算法。其中包括CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS,RC6, Rijndael, SAFER+, Serpent, Twofish。 其中五個候選演算法進入第二輪: MARS, RC6, Rijndael, Serpent, andTwofish. 1999年3月完成了第二輪AES2的分析、測試,最終確認Rijndael演算法獲得勝利。NIST於2002年5月26日制定了新的高級加密標准(AES)規范。

AES是典型的對稱加密演算法,應用廣泛。數據發信方將明文和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。其優點是對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,雙方都使用同樣鑰匙,安全性得不到保證。

在此扯一下題外話,不對稱加密演算法,比如著名的RSA演算法,使用兩把完全不同但又是完全匹配的一對鑰匙----公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且加密者知道收信方的公鑰,只有解密者才是唯一知道自己私鑰的人。

AES演算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。AES使用幾種不同的方法來執行排列和置換運算。AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,並且用128位(16位元組)分組加密和解密數據。與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換和替換輸入數據。密碼學簡介據記載,公元前400年,古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用「恩尼格瑪」密碼機,密碼學在戰爭中起著非常重要的作用。

AES加密過程是在一個4×4的位元組矩陣上運作,這個矩陣又稱為「state」,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個Byte)。加密時,各輪AES加密循環(除最後一輪外)均包含4個步驟:

1.AddRoundKey — 矩陣中的每一個位元組都與該次round key做XOR運算;每個子密鑰由密鑰生成方案產生。
2.SubBytes — 通過一個非線性的替換函數,用查找表的方式把每個位元組替換成對應的位元組。
3.ShiftRows — 將矩陣中的每個橫列進行循環式移位。
4.MixColumns — 為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個位元組。

7. 什麼是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演算法。(本文為原創,轉載需向我請求許可權,謝謝~)

8. 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],解密運算是加密變化的逆變化。

9. 簡述aes演算法的加密過程

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

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

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

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

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

10. golang crypt包的AES加密函數的使用

golang AES加密函數的使用

AES: Advanced Encryption Standard
高階加密標准,是用來代替 老的DES的。

AES加密演算法的加密塊必須是16位元組(128bit),所以不足部分需要填充,常用的填充演算法是PKCS7。
AES加密演算法的key可以是16位元組(AES128),或者24位元組(AES192),或者是32位元組(AES256)

ECB:Electronic Codebook Book
CBC:Cipher Block Chaining:這是最常見的塊加密實現

CTR:Counter
CFB:Cipher FeedBack
OFB:Output FeedBack

具體的差異我也沒去弄明白,知道這么個意思,加密演算法稍後差異。

包括AES,CBC,CTR,OFB,CFB,GCM。
這其中GCM不需要加密塊必須16位元組長度,可以是任意長度,其他的都需要16位元組對其,所以不足部分都需要補充。

3.1 AES

3.2 CBC

3.3 CTR

3.4 OFB

3.5 CFB

3.6 GCM
GCM實現演算法不需要pad。

閱讀全文

與aes演算法key相關的資料

熱點內容
進入組策略的命令 瀏覽:137
python數據結構和內存 瀏覽:25
python軟體功能簡介 瀏覽:784
外國程序員一般多少歲退休 瀏覽:917
怎麼看linux和時間伺服器 瀏覽:680
程序員搞笑花名 瀏覽:501
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971