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

aes演算法des

發布時間:2022-12-22 19:45:30

1. 6 Go 密碼學(三)對稱加密 DES、TDES、AES

我們在開發中常會遇到這種需求:通信的兩端需要傳輸安全級別較高的數據,這需要我們傳輸的加密數據既要難以破解,又要可逆的解密過程。哈希演算法雖難以破解,但並非適用於通信中的加解密傳輸。這就需要基於秘鑰管理的加密技術了。對稱加密是最簡單快速的加密方式,所謂對稱加密,即加解密雙方都掌握相同的秘鑰,通過同一秘鑰完成加解密操作。常用的對稱加密演算法有:

Go標准庫中的加密相關包都有相應的支持,下面我們來逐一演示:

所以要實現DES加密需要准備如下要求:

以上,秘鑰和初始化向量值需要自己管理,末尾分組的填充演算法和刪除演算法需要自己實現。下面我們實現一個填充演算法和刪除演算法:

以上實現思路為:計算出最後一個分組需要填充的位元組數(1-8),並把這個數作為需要填充的佔位符,再把填充後的分組與源數據拼接就得到待加密的字元串。

Go通過crypto/des包支持DES加密演算法:

使用以上加解密方法:

以上就是Go 中DES的加解密實現,可見其加密的安全性依賴於秘鑰的管理,而且其只有64Bit的秘鑰長度在算力越來越高的現在已經不夠安全了,這也是對稱加密的弱點,在實際的網路項目中,秘鑰的分發需要依賴其他方式的配合。

對於DES秘鑰較弱的問題做了一些改進,這就是三重DES加密演算法,其原理與DES類似,唯一不同的是秘鑰從一組八位元組變成三組二十四位元組(192Bit)。其加密強度也和秘鑰設置相關,此處演示我們也用CBC分組模式,三重加密執行順序分別為,加密->解密->加密。

為了兼容DES,只有當秘鑰一組和秘鑰二組相同時,3DES其加密安全性和DES相同,其餘秘鑰的分組設置都是三重DES加密。

使用以上加解密方法:

隨著時代的發展,DES和3DES於現今的算力和性能要求來說已經逐漸落伍,為了適應更高的安全性和性能需要,業界採用的一種區塊加密標准。這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。這就是AES對稱加密演算法,在現今的項目開發中,建議使用這種加密方式。

AES的基本要求是,採用對稱分組密碼體制,密鑰的長度最少支持為128、192、256,分組長度128位。

所以要實現AES加密需要准備如下要求:

Go通過crypto/aes包支持DES加密演算法:

以上,其用法和DES差不多,只不過秘鑰管理稍微不同而已。

2. AES DES加密有什麼區別啊

AES和DES加密的區別:
1、密鑰長度不同
AES 密鑰長度可以是 128 位,192 位和 256 位。DES 密鑰長度在 DES 中為 56 位。
2、輪數不同
AES 輪數取決於密鑰長度:10 (128 位), 12 (192 位) 或 14 (256 位)。DES 涉及 16 輪相同的操作。
3、原理不同
AES 結構基於置換排列網路。DES 結構基於 feistal 網路。
4、安全性不同
AES 比 DES 密碼更安全,並且是事實上的世界標准。由於 DES 具有已知漏洞,因此很容易被破壞。 3DES (三重 DES) 是 DES 的一種變體,它比通常的 DES 安全。
5、回合不同
AES 中的回合為:位元組替換,移位行,混合列和鍵添加。DES 中的回合為:擴展,帶回合鍵的 XOR 操作,替換和置換。
6、加密不同
AES 可以加密 128 位純文本。DES 可以加密 64 位純文本。

3. 什麼是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輪則不再需要進行列混淆。

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

4. AES演算法出現後,DES演算法還被廣泛應用嗎

AES為了取代DES而產生。
AES出台後,DES在正式商用公用的新場合都已經不再使用,只保留對舊軟體的兼容支持。
但3次疊加的3DES演算法還在各個允許運用的標准中。

DES在密性需求不大的私用領域,還是可以使用的。畢竟現在破DES還是需要成本,即使成本很低低到5角錢,很多信息也不值得花5角錢去破。何況破解DES的成本肯定在十萬元以上。

騰訊還在QQ中應用TEA演算法,而TEA的密性比DES還差很多倍。所以DES在非商用場合還是可以被應用的。

5. AES和DES的比較

對稱加密AES和DES總結:

1.兩個加密演算法都是對數據進行分塊加密

2.兩個加密演算法都需要去擴展密鑰

3.都有自己對應的表對要加密的明文去做轉換

4.都是用子密鑰去對轉換之後的明文做加密處理

AES原理講解1

AES原理講解2

漫畫版AES原理講解

AES演算法的填充模式

6. 幾種常用數據加密演算法的比較

幾種對稱性加密演算法:AES,DES,3DES
DES是一種分組數據加密技術(先將數據分成固定長度的小數據塊,之後進行加密),速度較快,適用於大量數據加密,而3DES是一種基於DES的加密演算法,使用3個不同密匙對同一個分組數據塊進行3次加密,如此以使得密文強度更高。
相較於DES和3DES演算法而言,AES演算法有著更高的速度和資源使用效率,安全級別也較之更高了,被稱為下一代加密標准。
幾種非對稱性加密演算法:RSA,DSA,ECC
RSA和DSA的安全性及其它各方面性能都差不多,而ECC較之則有著很多的性能優越,包括處理速度,帶寬要求,存儲空間等等。
幾種線性散列演算法(簽名演算法):MD5,SHA1,HMAC
這幾種演算法只生成一串不可逆的密文,經常用其效驗數據傳輸過程中是否經過修改,因為相同的生成演算法對於同一明文只會生成唯一的密文,若相同演算法生成的密文不同,則證明傳輸數據進行過了修改。通常在數據傳說過程前,使用MD5和SHA1演算法均需要發送和接收數據雙方在數據傳送之前就知道密匙生成演算法,而HMAC與之不同的是需要生成一個密匙,發送方用此密匙對數據進行摘要處理(生成密文),接收方再利用此密匙對接收到的數據進行摘要處理,再判斷生成的密文是否相同。
對於各種加密演算法的選用:
由於對稱加密演算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密演算法。
在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的密鑰,然後用對稱加密演算法加密數據,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
如果在選定了加密演算法後,那採用多少位的密鑰呢?一般來說,密鑰越長,運行的速度就越慢,應該根據的我們實際需要的安全級別來選擇,一般來說,RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。

7. DES和AES演算法的比較,各自優缺點有哪些

聶定遠;李小俊討論了目前主要的一些數據加密演算法、DES演算法及高級加密標准(AES)的Rijndael演算法.比較了DES、AES對稱密碼演算法,得出AES具有比DES更好的安全性、效率、靈活性的結論.【作者單位】:中國地質大學信息工程學...

8. DES和AES演算法的比較,各自優缺點有哪些

聶定遠;李小俊
討論了目前主要的一些數據加密演算法、DES演算法及高級加密標准(AES)的Rijndael演算法。比較了DES、AES對稱密碼演算法,得出AES具有比DES更好的安全性、效率、靈活性的結論。
【作者單位】:中國地質大學信息工程學院 湖北武漢430074
【關鍵詞】:密碼演算法;數據加密;DES;AES
【分類號】:TN918.1
【正文快照】:
1DES演算法介紹DES演算法具有對稱性,既可以用於加密又可以用於解密。對稱性帶來的一個很大的好處在於硬體實現,DES的加密和解密可以用完全相同的硬體來實現。DES演算法的明文分組是64位,輸出密文也是64位。所以密鑰的有效位數是56位,加上校驗位共64位。總體流程如表1所示:輸入的64位明文,先經初始IP變換,形成64位數據,64位數據被分為兩部分,分別是L部分和 R部分;L和R經過16次迭代,形成新的64位;新的64位數據再經初始逆變換,輸出64位密文。初始置換和逆初始置換是簡單的移位操作。在迭代過程這一步驟,替代是在密鑰控制下進行的,而移位是按…

9. 「DES」和「AES」演算法的比較,各自優缺點有哪些

DES演算法優點:DES演算法具有極高安全性,到目前為止,除了用窮舉搜索法對DES演算法進行攻擊外,還沒有發現更有效的辦法。

DES演算法缺點:

1、分組比較短。

2、密鑰太短。

3、密碼生命周期短。

4、運算速度較慢。

AES演算法優點:

1、運算速度快。

2、對內存的需求非常低,適合於受限環境。

3、分組長度和密鑰長度設計靈活。

4、 AES標准支持可變分組長度,分組長度可設定為32比特的任意倍數,最小值為128比特,最大值為256比特。

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

6、很好的抵抗差分密碼分析及線性密碼分析的能力。

AES演算法缺點:目前尚未存在對AES 演算法完整版的成功攻擊,但已經提出對其簡化演算法的攻擊。

(9)aes演算法des擴展閱讀:

高級加密標准(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。

這個標准用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標准由美國國家標准與技術研究院(NIST)於2001年11月26日發布於FIPS PUB 197,並在2002年5月26日成為有效的標准。2006年,高級加密標准已然成為對稱密鑰加密中最流行的演算法之一。

閱讀全文

與aes演算法des相關的資料

熱點內容
6軸機器人演算法 瀏覽:890
手機主題照片在哪個文件夾 瀏覽:294
安卓手機後期用什麼軟體調色 瀏覽:628
cad修改快捷鍵的命令 瀏覽:242
好錢包app怎麼登錄不了 瀏覽:859
樹莓派都用python不用c 瀏覽:757
access文件夾樹的構造 瀏覽:662
安卓多指操作怎麼設置 瀏覽:658
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923
全球程序員節點贊 瀏覽:986
php函數傳遞數組 瀏覽:632
人工峰群演算法的目標函數 瀏覽:468
如何刪加密文檔 瀏覽:105
塗鴉app一鍵執行如何刪除 瀏覽:756
安卓手機如何打開fr3文件 瀏覽:743