非對稱加密演算法aes
㈠ 什麼是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輪則不再需要進行列混淆。
進行解密的時候,需要進行逆向位元組替代,逆向行移位、逆向列混淆和輪密鑰加。
㈡ RSA和AES區別
先了解下AES和RSA的區別,前者屬於 對稱加密 ,後者屬於 非對稱加密 。
1、對稱加密
對稱加密就是加密和解密使用同一個密鑰。
用數學公示表示就是:
▲加密:Ek(P) = C
▲解密:Dk(C) = P
這里E表示加密演算法,D表示解密演算法,P表示明文,C表示密文。
是不是看起來有點不太容易理解?看下圖:
看過間諜局的知友們一定知道電台和密碼本的功能。潛伏裡面孫紅雷通過電台收聽到一堆數字,然後拿出密碼本比對,找到數字對應的漢字,就明白上級傳達的指令。而軍統的監聽台沒有密碼本,只看到一堆沒有意義的數字,這就是對稱演算法的原理。
AES就屬於對稱加密 ,常見的對稱加密方法還有DES、3DES、Blowfish、RC2以及國密的SM4。
2、非對稱加密
對稱加密快而且方便,但是有個缺點——密鑰容易被偷或被破解。非對稱加密就可以很好的避免這個問題。
非對稱演算法 把密鑰分成兩個 ,一個自己持有叫 私鑰 ,另一個發給對方,還可以公開,叫 公鑰 ,用公鑰加密的數據只能用私鑰解開。
▲加密: E公鑰(P) = C
▲解密::D私鑰(C) = P
這下就不用擔心密鑰被對方竊取或被破解了,私鑰由自己保管。
非對稱加密演算法核心原理其實就是設計一個數學難題,使得用公鑰和明文推導密文很容易,但根據公鑰、明文和密文推導私鑰極其難。
RSA 就屬於非對稱加密,非對稱加密還有Elgamal、背包演算法、Rabin、D-H、ECC(橢圓曲線加密演算法)以及國家商用密碼SM2演算法。
3、AES和RSA
AES和RSA都很安全,至少在目前的計算機體系結構下,沒有任何有效的攻擊方式。量子計算機時代,RSA有一定的破綻,因為利用shro's algorithm,量子計算機窮舉計算質因子速度可以提高N個數量級,能夠在有限的時間內破解RSA密鑰。AES256至少目前並沒有什麼明顯的漏洞。
AES作為對稱加密技術,加密速度很快。 現在高端一點的CPU都帶有AES-NI指令,可以極快的完成加密和解密。
舉例來說,堅果雲存儲系統採用了intel 的AES-NI加速,在採用AES加密和解密的時候,
單核的性能可以超過 1GB Byte/秒,非常非常快,很適合對大量數據進行加解密。
但是AES作為對稱加密技術,如何安全的分發密鑰是一個難題。通過任何方式傳遞密鑰都有泄密的風險。當然,目前我國高大上的量子通信技術或許能很好的解決這個問題。
RSA作為非對稱加密技術的代表, 加解密的速度其實相當慢,只能對小塊的數據進行加解密。但是其非對稱的特點,滿足公鑰可以隨處分發,只有公鑰能解密私鑰加密的數據,只有私鑰能解密公鑰加密的數據。所以很適合用來進行密鑰分發和身份驗證,這兩個應用場景剛好相反。
1)用於對稱秘鑰分發的場景,其他人用公鑰加密對稱的秘鑰,那麼只有授權人才持有私鑰,因此才能解密獲得對應的秘鑰,解決了AES密鑰分發的難題;
2)對於身份驗證的場景,授權人用私鑰加密一段指令,其他人用公鑰解密對應的數據,驗證對應的指令與之前約定的某些特徵一致(例如,這段話必須使用四川口音,像是堅果雲CEO
的標准四川口音==),如果一致,那麼可以確認這個指令就是授權人發出的。
相關趣聞軼事:
RSA除了是一個偉大的發明,被免費開放給所有互聯網用戶使用。它的發明者還以此成立了一家名為 RSA Security 的網路安全公司,這家公司最後被EMC高價收購。這是德藝雙馨的偉大證明, 是「又紅又專」的典範。
RSA的演算法是以三個發明者的名字命名的,三位都是成功的數學家,科學家和企業家,其中的排名第一Ron Rivest,有非常多的傑出貢獻。
RSA是整個互聯網數據安全的基礎,與光纖處於同樣基礎和重要的方式。 大部分的加密和解密的應用都是同時應用RSA和AES。
總結
破解加密的難度除了跟 加密方法 有關,還跟 密鑰長度 以及 加密模式 有很大的關系,就拿AES來說,有AES128和AES256( 代表密鑰長度 ),顯然AES256的安全性能比AES128更高,而AES又要四種模式:ECB、CBC、CFB、OFB( 代表加密模式 )。
RSA1024是屬於非對稱加密,是基於大整數因式分解難度,也就是兩個質數相乘很容易,但是找一個大數的質因子非常困難。量子計算機時代,RSA有一定的風險,具體可以參考: 超鏈接
AES256目前沒有明顯的漏洞,唯一的問題就是如何安全的分發密鑰。
現在大部分的加密解密都是同時應用RSA和AES,發揮各自的優勢,使用RSA進行密鑰分發、協商,使用AES進行業務數據的加解密。
㈢ 安卓常見的一些加密((對稱加密DES,AES),非對稱加密(RSA),MD5)
DES是一種對稱加密演算法,所謂對稱加密演算法即:加密和解密使用相同密鑰的演算法。DES加密演算法出自IBM的研究,
後來被美國政府正式採用,之後開始廣泛流傳,但是近些年使用越來越少,因為DES使用56位密鑰,以現代計算能力,
24小時內即可被破解
調用過程
最近做微信小程序獲取用戶綁定的手機號信息解密,試了很多方法。最終雖然沒有完全解決,但是也達到我的極限了。有時會報錯:javax.crypto.BadPaddingException: pad block corrupted。
出現錯誤的詳細描述
每次剛進入小程序登陸獲取手機號時,會出現第一次解密失敗,再試一次就成功的問題。如果連續登出,登入,就不會再出現揭秘失敗的問題。但是如果停止操作過一會,登出後登入,又會出現第一次揭秘失敗,再試一次就成功的問題。
網上說的,官方文檔上注意點我都排除了。獲取的加密密文是在前端調取wx.login()方法後,調用我後端的微信授權介面,獲取用戶的sessionkey,openId.然後才是前端調用的獲取sessionkey加密的用戶手機號介面,所以我可以保證每次sessionkey是最新的。不會過期。
並且我通過日誌發現在sessionkey不變的情況下,第一次失敗,第二次解密成功。
加密演算法,RSA是繞不開的話題,因為RSA演算法是目前最流行的公開密鑰演算法,既能用於加密,也能用戶數字簽名。不僅在加密貨幣領域使用,在傳統互聯網領域的應用也很廣泛。從被提出到現在20多年,經歷了各種考驗,被普遍認為是目前最優秀的公鑰方案之一
非對稱加密演算法的特點就是加密秘鑰和解密秘鑰不同,秘鑰分為公鑰和私鑰,用私鑰加密的明文,只能用公鑰解密;用公鑰加密的明文,只能用私鑰解密。
一、 什麼是「素數」?
素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積
二、什麼是「互質數」(或「互素數」)?
小學數學教材對互質數是這樣定義的:「公約數只有1的兩個數,叫做互質數
(1)兩個質數一定是互質數。例如,2與7、13與19。
(2)一個質數如果不能整除另一個合數,這兩個數為互質數。例如,3與10、5與 26。
(3)1不是質數也不是合數,它和任何一個自然數在一起都是互質數。如1和9908。
(4)相鄰的兩個自然數是互質數。如 15與 16。
(5)相鄰的兩個奇數是互質數。如 49與 51。
(6)大數是質數的兩個數是互質數。如97與88。
(7)小數是質數,大數不是小數的倍數的兩個數是互質數。如 7和 16。
(8)兩個數都是合數(二數差又較大),小數所有的質因數,都不是大數的約數,這兩個數是互質數。如357與715,357=3×7×17,而3、7和17都不是715的約數,這兩個數為互質數。等等。
三、什麼是模指數運算?
指數運算誰都懂,不必說了,先說說模運算。模運算是整數運算,有一個整數m,以n為模做模運算,即m mod n。怎樣做呢?讓m去被n整除,只取所得的余數作為結果,就叫做模運算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。
模指數運算就是先做指數運算,取其結果再做模運算。如(5^3) mod 7 = (125 mod 7) = 6。
其中,符號^表示數學上的指數運算;mod表示模運算,即相除取余數。具體演算法步驟如下:
(1)選擇一對不同的、足夠大的素數p,q。
(2)計算n=p q。
(3)計算f(n)=(p-1) (q-1),同時對p, q嚴加保密,不讓任何人知道。
(4)找一個與f(n)互質的數e作為公鑰指數,且1<e<f(n)。
(5)計算私鑰指數d,使得d滿足(d*e) mod f(n) = 1
(6)公鑰KU=(e,n),私鑰KR=(d,n)。
(7)加密時,先將明文變換成0至n-1的一個整數M。若明文較長,可先分割成適當的組,然後再進行交換。設密文為C,則加密過程為:C=M^e mod n。
(8)解密過程為:M=C^d mod n。
在RSA密碼應用中,公鑰KU是被公開的,即e和n的數值可以被第三方竊聽者得到。破解RSA密碼的問題就是從已知的e和n的數值(n等於pq),想法求出d的數值,這樣就可以得到私鑰來破解密文。從上文中的公式:(d e) mod ((p-1) (q-1)) = 1,我們可以看出,密碼破解的實質問題是:從p q的數值,去求出(p-1)和(q-1)。換句話說,只要求出p和q的值,我們就能求出d的值而得到私鑰。
當p和q是一個大素數的時候,從它們的積p q去分解因子p和q,這是一個公認的數學難題。比如當p*q大到1024位時,迄今為止還沒有人能夠利用任何計算工具去完成分解因子的任務。因此,RSA從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
缺點1:雖然RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何。
在android 開發的很多時候。為了保證用戶的賬戶的安全性,再保存用戶的密碼時,通常會採用MD5加密演算法,這種演算法是不可逆的,具有一定的安全性
MD5不是加密演算法, 因為如果目的是加密,必須滿足的一個條件是加密過後可以解密。但是MD5是無法從結果還原出原始數據的。
MD5隻是一種哈希演算法
㈣ 對稱加密演算法與非對稱加密演算法的特點及用途
對稱加密演算法
對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。
對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有des、idea和aes。
不對稱加密演算法
不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有rsa演算法和美國國家標准局提出的dsa。以不對稱加密演算法為基礎的加密技術應用非常廣泛。
㈤ 非對稱加密和對稱加密
非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:
1、加密和解密過程不同
對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
一、對稱加密演算法
指加密和解密使用相同密鑰的加密演算法。對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括DES、3DES、AES、DESX、Blowfish、、RC4、RC5、RC6。
DES(Data Encryption Standard) :數據加密標准,速度較快,適用於加密大量數據的場合。
3DES(Triple DES) :是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高。
AES(Advanced Encryption Standard) :高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;
二、非對稱加密演算法
指加密和解密使用不同密鑰的加密演算法,也稱為公私鑰加密。假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。常見的非對稱加密演算法:RSA、DSA(數字簽名用)、ECC(移動設備用)、Diffie-Hellman、El Gamal。
RSA: 由 RSA 公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm) :數字簽名演算法,是一種標準的 DSS(數字簽名標准);
ECC(Elliptic Curves Cryptography) :橢圓曲線密碼編碼學。
ECC和RSA相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
(1)抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。
(2)計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。
(3)存儲空間佔用小。ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
(4)帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網路領域具有廣泛的應用前景。
三、散列演算法(Hash演算法---單向加密演算法)
散列是信息的提煉,通常其長度要比信息小得多,且為一個固定長度。加密性強的散列一定是不可逆的,這就意味著通過散列結果,無法推出任何部分的原始信息。任何輸入信息的變化,哪怕僅一位,都將導致散列結果的明顯變化,這稱之為雪崩效應。散列還應該是防沖突的,即找不出具有相同散列結果的兩條信息。具有這些特性的散列結果就可以用於驗證信息是否被修改。
Hash演算法: 特別的地方在於它是一種單向演算法,用戶可以通過Hash演算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash演算法常用在不可還原的密碼存儲、信息完整性校驗等。
單向散列函數一般用於產生消息摘要,密鑰加密等,常見的Hash演算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1。
MD5(Message Digest Algorithm 5): 是RSA數據安全公司開發的一種單向散列演算法,非可逆,相同的明文產生相同的密文。
SHA(Secure Hash Algorithm): 可以對任意長度的數據運算生成一個160位的數值;
SHA-1與MD5的比較
因為二者均由MD4導出,SHA-1和MD5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
(1)對強行供給的安全性:最顯著和最重要的區別是SHA-1摘要比MD5摘要長32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD5是2^(128)數量級的操作,而對SHA-1則是2^(160)數量級的操作。這樣,SHA-1對強行攻擊有更大的強度。
(2)對密碼分析的安全性:由於MD5的設計,易受密碼分析的攻擊,SHA-1顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-1的運行速度比MD5慢。
四、 加密演算法的選擇
1.由於非對稱加密演算法的運行速度比對稱加密演算法的速度慢很多,當我們需要加密大量的數據時,建議採用對稱加密演算法,提高加解密速度。
2.對稱加密演算法不能實現簽名,因此簽名只能非對稱演算法。
3.由於對稱加密演算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密演算法。
4.在實際的操作過程中,我們通常採用的方式是:採用非對稱加密演算法管理對稱演算法的密鑰,然後用對稱加密演算法加密數據,這樣我們就集成了兩類加密演算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
那採用多少位的密鑰呢?
RSA建議採用1024位的數字,ECC建議採用160位,AES採用128為即可。
㈥ 非對稱加密演算法有哪些
RSA、Elgamal、背包演算法、Rabin、D-H、ECC橢圓曲線加密演算法。
非對稱加密(公鑰加密):指加密和解密使用不同密鑰的加密演算法,也稱為公私鑰加密。假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業中有n個用戶,企業需要生成n對密鑰,並分發n個公鑰。假設A用B的公鑰加密消息,用A的私鑰簽名,B接到消息後,首先用A的公鑰驗證簽名,確認後用自己的私鑰解密消息。由於公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發將變得十分簡單。同時,由於每個用戶的私鑰是唯一的,其他用戶除了可以通過信息發送者的公鑰來驗證信息的來源是否真實,還可以通過數字簽名確保發送者無法否認曾發送過該信息。
㈦ AES和RSA是什麼關系和MD5又有什麼關系
AES和RSA都是加密演算法
AES屬於對稱加密演算法
RSA屬於非對稱加密演算法,公鑰和私鑰不一致
MD5是一種校驗方式,用於保證文件的正確性,防止被植入木馬或病毒
㈧ AES加密技術
關鍵字
藍牙
流加密
分組加密
des
aes
1
引言隨著機技術的迅速,網路中的信息安全問題越來...
vba、word和資料庫的聯合編程日期:2008-04-05
01:37:06
點擊:15
好評:0
摘要
本文介紹了用vba作為開發語言,用access或foxpro作為數據...
wsdxs.cn/html/pc-theory
㈨ aes是對稱還是非對稱加密演算法
AES屬於對稱加密方法,高級加密標准(Advanced Encryption Standard,AES)
㈩ 2019-06-10 對稱加密 和非對稱加密
一、對稱加密
AES加密
AES加密是一種高級加密標准,是一種區塊加密標准。它是一個對稱密碼,就是說加密和解密用相同的密鑰。WPA/WPA2經常用的加密方式就是AES加密演算法。
二、非對稱加密
RSA加密演算法是一種非對稱加密演算法,非對稱加密演算法需要兩個密鑰:公共密鑰和私有密鑰。公鑰和私鑰是配對的,用公鑰加密的數據只有配對的私鑰才能解密。
RSA對加密數據的長度有限制,一般為密鑰的長度值-11,要加密較長的數據,可以採用數據截取的方法,分段加密。
使用場景:
文件或數據在本地使用公鑰或私鑰加密,加密後的數據傳送到伺服器,伺服器使用同一套密鑰中的私鑰或者公鑰進行解密。
一、Https是什麼?
1.HTTPS概念
HTTPS並不是一個單獨的協議,而是對工作在一加密連接(SSL/TLS)上的常規HTTP協議。通過在TCP和HTTP之間加入TLS來加密。
2.SSL/TLS協議
SSL協議,是一種安全傳輸的協議,TLS是SSL v3.0的升級版。
4.HTTPS傳輸速度
1)通信慢
2)SSL必須進行加密處理,比HTTP消耗更多資源
二、TLS/SSL握手
1.密碼學原理
1)對稱加密
加密數據用的秘鑰和解密數據用的密鑰是一樣的。
2)不對稱加密
私有密鑰:一方保管
共有密鑰:雙方公有
RSA演算法。
2.數字證書
1)就是互聯網通訊中標志通訊各方身份信息的一串數字,也是一個文件。
2)為什麼有數字證書?
3)數字證書的頒發過程?
3.SSL與TLS握手的過程?
使用非對稱加密,隨機數不能被隨便破解
Https雙向認證的流程:
a. 客戶端向服務端發送SSL版本等信息
b. 服務端給客戶端返回SSL版本,同時也返回伺服器端的證書
c. 客戶端使用服務的返回的信息驗證伺服器的合法性,
a) 包括:證書是否過期,發型伺服器證書的CA是否可靠,返回的公鑰能正確解開返回證書中的數字簽名,伺服器證書上帝域名是否和伺服器的實際域名想匹配
b) 驗證通過後,將進行通信,否則終止通信
d. 客戶端將自己的證書和公鑰發送給服務端
e. 驗證客戶端的證書,通過驗證後,會獲得客戶端的公鑰
f. 客戶端向服務端發送自己可以支持的對稱加密方案給服務端,讓服務端進行選擇
g. 服務端在客戶端提供的加密方案中選擇加密程度高的加密方式
h. 將加密方案通過使用之前獲取到的公鑰進行加密,返回給客戶端
i. 客戶端收到服務端返回的加密方案後,使用自己的私鑰進行解密,獲取具體的加密方式,最後,產生加密方式的隨機碼,用作過程中的密鑰,使用之前從客戶端證書中獲取到的公鑰進行加密後,發送嘿服務端
j. 服務端收到客戶端發來的消息後,使用私鑰對加密信息進行加密,獲得對稱加密的密鑰
k. 對稱加密,確保通信安全
總結:https實際上就是在TCP層與http層之間加入了SSL/TLS來為上層的安全保駕護航,主要用到了對稱加密,非對稱加密,證書等技術進行客戶端與伺服器的數據加密傳輸,最終達到保證整個通信的安全性。