A. Android數據加密之Aes加密
什麼是aes加密?
高級加密標准(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。
接下來我們來實際看下具體怎麼實現:
對於AesUtils類常量簡介:
如何生成一個隨機Key?
運行耗時:
數據前後變化:
B. 簡述aes演算法的加密過程
AES加密過程涉及到 4 種操作,分別是位元組替代、行移位、列混淆和輪密鑰加。
1.位元組替換:位元組代替的主要功能是通過S盒完成一個位元組到另外一個位元組的映射。
2.行移位:行移位的功能是實現一個4x4矩陣內部位元組之間的置換。
4.輪密鑰加:加密過程中,每輪的輸入與輪密鑰異或一次(當前分組和擴展密鑰的一部分進行按位異或);因為二進制數連續異或一個數結果是不變的,所以在解密時再異或上該輪的密鑰即可恢復輸入。
5.密鑰擴展:其復雜性是確保演算法安全性的重要部分。當分組長度和密鑰長度都是128位時,AES的加密演算法共迭代10輪,需要10個子密鑰。AES的密鑰擴展的目的是將輸入的128位密鑰擴展成11個128位的子密鑰。AES的密鑰擴展演算法是以字為一個基本單位(一個字為4個位元組),剛好是密鑰矩陣的一列。因此4個字(128位)密鑰需要擴展成11個子密鑰,共44個字。
C. 什麼是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輪則不再需要進行列混淆。
進行解密的時候,需要進行逆向位元組替代,逆向行移位、逆向列混淆和輪密鑰加。
D. 什麼是AES加密有什麼用呢
無線網路加密,防止蹭網
E. AES加密的詳細過程是怎麼樣的
詳細過程如下圖:
AES加密標准又稱為高級加密標准Rijndael加密法,是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。AES的基本要求是,採用對稱分組密碼體制,密鑰長度可以為128、192或256位,分組長度128位,演算法應易在各種硬體和軟體上實現。
1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選演算法。
1999年3月完成了第二輪AES2的分析、測試。2000年10月2日美國政府正式宣布選中比利時密碼學家Joan Daemen和Vincent Rijmen提出的一種密碼演算法Rijndael作為AES的加密演算法。
AES加密數據塊和密鑰長度可以是128b、192b、256b中的任意一個。AES加密有很多輪的重復和變換。
F. AES什麼加密方式,起到什麼作用!
AES是高級加密標准,但是對普通的地電腦用戶是不需知道的,我們能用到的都是基於此標准開發的各種加密方法,EFS,MD5,無線網路的WEP,WAP等
G. AES加密技術
關鍵字
藍牙
流加密
分組加密
des
aes
1
引言隨著機技術的迅速,網路中的信息安全問題越來...
vba、word和資料庫的聯合編程日期:2008-04-05
01:37:06
點擊:15
好評:0
摘要
本文介紹了用vba作為開發語言,用access或foxpro作為數據...
wsdxs.cn/html/pc-theory
H. 什麼是AESAES加密函數和AES解密函數
它被預期能成為人們公認的加密包括金融、電信和政府數字信息的方法。 AES 是一個新的可以用於保護電子數據的加密演算法。明確地說,AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16位元組)分組加密和解密數據。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據 的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換(permutations )和替換(substitutions)輸入數據。Figure 1 顯示了 AES 用192位密鑰對一個16位位元組數據塊進行加密和解密的情形。
I. aes加密安全嗎
AES演算法作為DES演算法和MD5演算法的替代產品,10輪循環到目前為止還沒有被破解。一般多數人的意見是:它是目前可獲得的最安全的加密演算法。AES與目前使用廣泛的加密演算法─DES演算法的差別在於,如果一秒可以解DES,則仍需要花費1490000億年才可破解AES,由此可知AES的安全性。AES 已被列為比任何現今其它對稱加密演算法更安全的一種演算法。