這個跟php沒有關系,單純的是兩個密碼學的演算法。如果真想搞清楚區別,你需要有密碼學的基礎知識。
我簡單說一下,這兩個都是標準的密碼學演算法,應用廣泛。AES是一個對稱加密演算法,常常用於對數據進行加密,RSA是一個非對稱(公鑰)加密演算法,常常用於對AES加密用的密鑰進行加密,或者進行數字簽名等。
至於對稱加密演算法和非對稱加密演算法的區別說起來就越來越多了。你只要知道以下事實就好:
對稱加密演算法加解密密鑰相同,而非對稱加密演算法加解密密鑰不同
對稱加密演算法相對於非對稱加密演算法而言往往加解密速度很快
非對稱加密演算法具有任何有公鑰的人都能加密數據,但是只有有私鑰的人才能解密數據的特點
㈡ 加密IC加密方式有哪些
當前推薦的有幾種方式,安全性由低到高分別為:
方式一,使用加密晶元內部存儲的一些數據(通常晶元唯一ID),在程序執行前或過程中做ID驗證,判斷是否為合法加密IC,如不合法則禁止操作
優點:操作簡單
缺點:安全性很低,一旦被截獲,則晶元失效
方式二
與方式一原理相似,但存儲在加密晶元中的為密鑰(AES
或者
DES,密鑰長度8位元組或16位元組),程序運行前或運行中,取隨機數
由加密晶元和程序本身對隨機數加密,驗證結果是否相同來判斷是否合法。
優點:晶元操作簡單
缺點:安全性有缺陷,如果MCU端程序被破解,會導緻密鑰泄露,晶元失效
方式三
可編程類加密晶元,可將MCU端的部分程序移植到加密晶元中,程序運行時由MCU端程序和加密晶元配合來實現完整程序的執行。
優點:安全性高,MCU端被破解不會影響程序安全性,必須破解加密晶元
缺點:開發略顯復雜
綜上所述:如想要真正的保護程序,還是建議用可編程類的晶元,安全性好,當前的環境下極難被破解。北京有一家公司在做,LKT4105也支持方式一和方式二,可以嘗試一下
㈢ 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進行業務數據的加解密。
㈣ 對於加密的總結(AES,RSA)
跟第三方聯調的時候會碰到各種加密演算法,所以總結一下。
AES不是將拿到的明文一次性加密,而是分組加密,就是先將明文切分成長度相等的塊,每塊大小128bit,再對每一小塊進行加密。那麼問題就來了,並不是所有的原始明文串能被等分成128bit,例如原串大小200bit,那麼第二個塊只有72bit,所以就需要對第二個塊進行填充處理,讓第二個塊的大小達到128bit。常見的填充模式有
不進行填充,要求原始加密串大小必須是128bit的整數倍;
假設塊大小8位元組,如果這個塊跟8位元組還差n個位元組,那麼就在原始塊填充n,直到滿8位元組。例:塊{1,2,3},跟8位元組差了5個位元組,那麼補全後的結果{1,2,3,5,5,5,5,5}後面是五個5,塊{1,2,3,..7}跟8位元組差了1個位元組,那麼補全後就是{1,2,3,...,7,1},就是補了一個1。
如果恰好8位元組又選擇了PKCS5Padding填充方式呢?塊{1,2,3...8}填充後變成{1,2,3...8,8...8},原串後面被補了8個8,這樣做的原因是方便解密,只需要看最後一位就能算出原塊的大小是多少。
跟PKCS5Padding的填充方式一樣,不同的是,PKCS5Padding只是對8位元組的進行填充,PKCS7Padding可以對1~256位元組大小的block進行填充。openssl里aes的默認填充方式就是PKCS7Padding
AES有多種加密模式,包括:ECB,CBC,CTR,OCF,CFB,最常見的還是ECB和CBC模式。
最簡單的一種加密模式,每個塊進行獨立加密,塊與塊之間加密互不影響,這樣就能並行,效率高。
雖然這樣加密很簡單,但是不安全,如果兩個塊的明文一模一樣,那麼加密出來的東西也一模一樣。
openssl的相關函數:
CBC模式中引入了一個新的概念,初始向量iv。iv的作用就是為了防止同樣的明文塊被加密成同樣的內容。原理是第一個明文塊跟初始向量做異或後加密,第二個塊跟第一個密文塊做異或再加密,依次類推,避免了同樣的塊被加密成同樣的內容。
openssl相關函數:
敲黑板!! 所以跟第三方對接的時候,如果對面說他們用aes加密,務必對他們發起靈魂三問:
簽名的作用是讓接受方驗證你傳過去的數據沒有被篡改;加密的作用是保證數據不被竊取。
原理:你有一個需要被驗簽的原串A。
步驟一:選擇hash演算法將A進行hash得到hash_a;
步驟二:將hash_a進行加密,得到加密值encrypt_a;
步驟三:將原串A和加密的encrypt_a發給第三方,第三方進行驗簽。第三方先解密encrypt_a,得到一個hash值hash_a1,然後對原串A使用同樣的hash演算法進行hash,得到的即為加密前的hash_a,如果hash_a = hash_a1, 那麼驗簽成功。
rsa使用私鑰對信息加密來做簽名,使用公鑰解密去驗簽。
openssl相關函數:
注意:兩個函數中的m,是原串hash後的值,type表示生成m的演算法,例如NID_sha256表示使用sha256對原串進行的hash,返回1為簽名成功或者驗簽成功,-1位為失敗。
再次敲黑板!! 所以如果第三方說使用rsa驗簽,要讓對方告知他們的hash演算法。
首先明確,私鑰加密不等於簽名。加密的時候,使用使用公鑰加密,第三方使用你的私鑰進行解密。
openssl里公鑰加密函數為RSA_public_encrypt,私鑰解密函數為RSA_private_decrypt,具體的可以自己去查看下官方文檔。
rsa也涉及到了填充方式,所以對接的時候也要問清楚
在使用公鑰進行加密時,會發現每次加密出的結果都不一樣,但使用私鑰加密時,每次的結果都一樣,網上查了一圈,說是因為填充方式的原因。
官方文檔說明:
那麼為什麼一定要使用私鑰做簽名,公鑰做加密,而不是公鑰做簽名,私鑰做加密呢?
舉個栗子:
㈤ aes des rsa的加密演算法有什麼區別通俗簡單講,就是各個的優點和缺點,不要太深奧
aes/des加密速度快,適合大量數據,des容易破解,一般用3重des,後來又出現了更快更安全的aes
rsa是公鑰加密,速度慢,只能處理少量數據,優點是公鑰即使在不安全的網路上公開,也能保證安全
常見情況是雙方用rsa協商出一個密鑰後通過aes/3des給數據加密
㈥ AES和RSA是什麼關系和MD5又有什麼關系
AES和RSA都是加密演算法
AES屬於對稱加密演算法
RSA屬於非對稱加密演算法,公鑰和私鑰不一致
MD5是一種校驗方式,用於保證文件的正確性,防止被植入木馬或病毒