iOS加密相關演算法框架:CommonCrypto
明文: 明文指的是未被加密過的原始數據。
密文: 明文被某種加密演算法加密之後,會變成密文,從而確保原始數據的安全。密文也可以被解密,得到原始的明文。
密鑰: 密鑰是一種參數,它是在明文轉換為密文或將密文轉換為明文的演算法中輸入的參數。密鑰分為對稱密鑰與非對稱密鑰,分別應用在對稱加密和非對稱加密上。
對稱加密又叫做私鑰加密 ,即信息的發送方和接收方使用 同一個密鑰 去加密和解密數據。
對稱加密的特點是 演算法公開、計算量少、加密和解密速度快效率高 ,適合於對大數據量進行加密;
缺點是 雙方使用相同的密鑰、密鑰傳輸的過程不安全、易被破解、因此為了保密其密鑰需要經常更換
常見的對稱加密演算法有 AES、DES 、3DES、TDEA、Blowfish、RC5和IDEA。【不過DES被認為是不安全的】
加密過程:明文 + 加密演算法 + 私鑰 => 密文
解密過程: 密文 + 解密演算法 + 私鑰 => 明文
對稱加密中用到的密鑰叫做 私鑰 ,私鑰表示個人私有的密鑰,即該密鑰不能被泄露。
其 加密過程中的私鑰與解密過程中用到的私鑰是同一個密鑰 ,這也是稱加密之所以稱之為「對稱」的原因。由於對稱加密的 演算法是公開 的,所以一旦私鑰被泄露,那麼密文就很容易被破解,所以對稱加密的 缺點是密鑰安全管理困難 。
3DES是DES加密演算法的一種模式,它使用3條64位的密鑰對數據進行三次加密。是DES像AES過渡的加密演算法,是DES的一個更安全的變形,它以DES為基本模塊,通過組合分組方法設計出分組加密演算法。
非對稱加密也叫做公鑰加密 。非對稱加密與對稱加密相比,其安全性更好。對稱加密的通信雙方使用相同的密鑰,如果一方的密鑰遭泄露,那麼整個通信就會被破解。而 非對稱加密使用一對密鑰,即公鑰和私鑰 , 且二者成對出現 。私鑰被自己保存,不能對外泄露。公鑰指的是公共的密鑰,任何人都可以獲得該密鑰。用公鑰或私鑰中的任何一個進行加密,用另一個進行解密。兩種使用方法:
哈希演算法加密是通過哈希演算法對數據加密、加密後的結果不可逆,即加密後不能在解密。
SHA加密,安全哈希演算法,主要適用於數字簽名簽名標准( DSS )裡面定義的數字簽名演算法( DSA )。對於長度小於 2^64 位的消息, SHA1 會產生一個160位的消息摘要。當接收消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麼這時候就會產生不同的消息摘要。當然除了 SHA1 還有 SHA256 以及 SHA512 等。
HMAC加密,給定一個密鑰,對明文加密,做兩次「散列」,得到的結果還是32位字元串。
就是或、與、異或、或者加上某個數據
特點:可逆、原始數據和加密數據長度保持一致
Ⅱ 怎樣將哈希結果用作對稱加解密演算法密鑰
呵呵,你的問題意思不通,多了個字吧?!應該是:數字信封技術為什麼要用對稱密碼DES加密數據,用非稱加解密RSA演算法加密密鑰?
非對稱加密演算法對大容量數據加密時,運算速度非常慢,比對稱演算法差好幾個數量級!!
所以用對稱演算法加密大容量數據,非對稱演算法加密密鑰。
Ⅲ 通信安全:哈希、加密、證書、簽名、密鑰協商、ECDH、TLS、DTLS
哈希也叫散列,是把任意長度的輸入通過散列演算法變換成固定長度的輸出,該輸出就是散列值,也叫摘要(Digest)。
這種轉換是一種 壓縮映射。 也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,所以不可能從散列值來確定唯一的輸入值,但如果輸出的位數足夠,不同輸入散列成相同輸出的概率非常非常小。
簡單的說, 散列就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的過程 。
散列是不可逆的 ,也就是無法通過輸出還原輸入,此特性常被用於密碼保存。
SHA-512、MD5等都是著名的散列函數,MD5生成的散列碼是128位,甚至MD5就是哈希的同名詞,你可以通過網站:https://passwordsgenerator.net/sha512-hash-generator/ 在線計算哈希。
散列有什麼用?
加密就是把 明文變成密文的過程,解密就是反方向把密文變成明文 。
比如著名的 凱撒密碼 ,就是把每個字對應到另一個,這樣的話,只要有密碼本,就能對照完成加解密。比如最簡單的,對於英文26個字母,每個字母右移3個,abc變成def,這也是一種加密,當然這種加密很簡單,很容易被破譯。
而諸如AES(高級加密標准)、3DES(三重數據加密演算法)則被公認為很難破解,不過山東大學女教授王小雲很厲害,破解了MD5和SHA-1,迫使加密標准升級,最終當上了院士。
對稱加密
對稱加密就是加解密的密鑰是一樣的,優點是快,這也是傳統的加密方式,像AES、3DES都是對稱加密。
非對稱加密
非對稱加密用於加解密的密鑰不一樣,有2個密鑰,公鑰和私鑰,公鑰可以公開,私鑰妥善保管。RSA、ECC(橢圓曲線加密演算法)、DH(密鑰交換演算法)這些都是非對稱加密。
非對稱加密很慢,有多慢?相比對稱加密慢1000倍,因為慢,所以它常用於密鑰協商(Handshake),協商出會話密鑰後,再用對稱密鑰加密通信數據。
1976年,Whitfield Diffie和Martin Hellman首次提出了非對稱加密的概念,該演算法被稱為Diffie-Hellman密鑰交換。然後在1978年,麻省理工學院的Ron Rivest,Adi Shamir和Leonard Adleman發表了RSA 演算法。這些都可以被視為非對稱加密的基礎。
非對稱加密也稱為公鑰基礎結構,又稱PKI。 非對稱加密的提出是密碼學上的一次革命,影響深遠。
非對稱加密演算法用私鑰加密,用公鑰解密,或者用公鑰加密,用私鑰解密。
證書就是為了證明我是我,比如你要訪問中國銀行網站,但中行官網如何證明它是中行官網呢?答案就是數字證書。
CA是數字證書中心,伺服器需要找CA做認證,讓CA給自己頒布數字證書,數字證書內一般包含服務的一些信息、以及伺服器的公鑰,通過CA的私鑰加密後,產生的數字證書,因為CA的權威性,且它的公鑰天下皆知,所以,如果你能用CA的公鑰解開證書,那便可證明該證書一定是CA頒發的,要不然它不會有CA的私鑰,也便沒法產生可用CA公鑰解密的證書。
所以,由此可見,數字證書用到了非對稱加密。
日常生活中也有簽名,每個人的筆跡是不一樣的,你刷卡消費後在賬單簽上大名,服務員校驗過之後保存下來,你哪天賴賬,便可以有簽名為證,因為別人寫的字跟你的筆跡終有差別。
那數字簽名是什麼呢?比如a發一封email,接收方怎麼證明這封信是a寫的?
本質上,數字簽名也是利用了非對稱加密。
前面講了,非對稱加密有公鑰和私鑰,如果發生方用私鑰加密,然後接收方用發送方的公鑰可以解密,那便可以證明是從某發送方發送的,因為別人拿不到你的私鑰,也便無法用你的私鑰加密,你不能抵賴。
數字簽名通常先對內容算哈希,產生內容摘要,再用私鑰加密,得到簽名。
下面舉一個例子來說明這幾個問題:
張三有2把鑰匙,一把公鑰,公告天下,一把私鑰,妥善保管,只有自己知道,很明顯,非對稱加密。
李四給張三寫信,寫完之後,用張三的公鑰加密,通過郵局寄給張三,即使郵遞員拆開信封看,他也看不懂,因為內容是密文,只有張三的密鑰才能解密。
張三收到信後,用私鑰解密,可以正常閱讀。
現在張三要給李四回信,寫完後,用hash函數生成摘要digest。
然後張三,再用私鑰對摘要加密,生成數字簽名signature。
然後把簽名附在信的下面,一起發給李四。
過程是:信明文 -> hash -> digist -> 私鑰加密 -> signature。
李四收到回信後,用張三的公鑰對數字簽名解密,得到摘要,由此證明,信確實是張三發出的,為什麼?因為如果不是張三發的,那寫信的人就沒有張三私鑰,用別的私鑰加密得到的簽名,是無法用張三的公鑰解開的。
李四,再對信的內容做hash,得到摘要,與上一步得到的摘要對比,如果一致,則證明信的內容沒有被修改過,信的內容是完整的。
復雜的情況出現了。
王五,用自己的公鑰替換李四保存的張三的公鑰,也就是王五欺騙了李四,李四誤把王五的公鑰當張三的公鑰,這樣一來,王五就能冒充張三給李四寫信(王五用自己的私鑰加密)。
問題是什麼?問題是李四不能確信自己保存的公鑰真的是張三的公鑰。如果客戶端電腦上存的工商銀行官網的公鑰,實際上是騙子公司的公鑰,那就麻煩大了。
怎麼破?讓張三去認證中心CA(Certificate Authority),為公鑰做認證,怎麼做呢?CA中心用自己的私鑰,對張三的公鑰和其他相關信息一起加密,生成數字證書(Digital Certificate)。
張三拿到數字證書後,以後給李四回信,在簽名的同時,附帶上數字證書。
李四收到信之後,從CA的公鑰解開數字證書,取出張三的公鑰(一定是真的),然後就能放心的愉快的按之前的流程解開簽名了。
數字證書加入後,核心區別就是張三的公鑰不再保存在李四處,而是通過數字證書下發。
為什麼數字證書里的張三的公鑰一定是真的呢?因為CA是權威機構,假設全世界就一家(其實不止,但也不多),它的公鑰天下盡知,就是固定的串,所以能用CA公鑰解開的證書,一定是CA頒布的,因為CA用它的私鑰加密產生的證書。很明顯,非對稱加密能用於證明我是我。
密鑰交換演算法
著名的DH密鑰交換演算法,這個演算法很有意思,也很巧妙,簡而言之,就是通信雙方交換一點信息(不怕被偷看到),然後就在兩端,分布產生出一個相同的密鑰,神奇啊。
有一個很有意思的例子。
Alice和Bob要協商出一個公共的顏色,他們可以交換信息,但交換的信息,可以被偷看到,怎麼辦?既能協商出公共顏色,又不能讓別人知道呢。
密鑰交換演算法的原理跟這個差不多,網上有大量的資料講述這個問題,我覺得理解了上面的例子,再看ECDH便也不難了。
眾所周知http是互聯網協議,但是它不夠安全,所以後面有改進版的https,其實就是多了一個TLS,這個是傳輸層加密,本質上,就是通過handshake,協商出一個會話密鑰,後面的數據傳遞,都用這個密鑰做對稱加解密。
我們經常講安全通道,其實也就是協商出一個會話密鑰,他並不神秘。胡亂放幾張圖片吧。
為了減少這幾個RTT,又想了各種辦法,然後復用連接的話,就可以做到0RTT,1RTT了。
就說這些吧,最後拋幾個名詞,有興趣自行網路學習:DTLS,HMAC,AEAD,重放攻擊,放大攻擊,是不是很高端?
Ⅳ 哈希演算法的原理
什麼是哈希演算法?哈希是一種加密演算法,也稱為散列函數或雜湊函數。哈希函數是一個公開函數,可以將任意長度的消息M映射成為一個長度較短且長度固定的值H(M),稱H(M)為哈希值、散列值(Hash Value)、雜湊值或者消息摘要。它是一種單向密碼體制,即一個從明文到密文的不可逆映射,只有加密過程,沒有解密過程。
Hash的特點
易壓縮:對於任意大小的輸入x,Hash值的長度很小,在實際應用中,函數H產生的Hash值其長度是固定的。
易計算:對於任意給定的消息,計算其Hash值比較容易。
單向性:對於給定的Hash值,要找到使得在計算上是不可行的,即求Hash的逆很困難。在給定某個哈希函數H和哈希值H(M)的情況下,得出M在計算上是不可行的。即從哈希輸出無法倒推輸入的原始數值。這是哈希函數安全性的基礎。
抗碰撞性:理想的Hash函數是無碰撞的,但在實際演算法的設計中很難做到這一點。
有兩種抗碰撞性:一種是弱抗碰撞性,即對於給定的消息,要發現另一個消息,滿足在計算上是不可行的;另一種是強抗碰撞性,即對於任意一對不同的消息,使得在計算上也是不可行的。
高靈敏性:這是從比特位角度出發的,指的是1比特位的輸入變化會造成1/2的比特位發生變化。消息M的任何改變都會導致哈希值H(M)發生改變。即如果輸入有微小不同,哈希運算後的輸出一定不同。
Ⅳ 公鑰、私鑰、哈希、加密演算法基礎概念
生活中我們對文件要簽名,簽名的字跡每個人不一樣,確保了獨特性,當然這還會有模仿,那麼對於重要文件再加蓋個手印,指紋是獨一無二的,保證了這份文件是我們個人所簽署的。
那麼在區塊鏈世界裡,對應的就是數字簽名,數字簽名涉及到公鑰、私鑰、哈希、加密演算法這些基礎概念。
首先加密演算法分為對稱加密演算法、非對稱加密演算法、哈希函數加密演算法三類。
所謂非對稱加密演算法,是指加密和解密用到的公鑰和私鑰是不同的,非對稱加密演算法依賴於求解一數學問題困難而驗證一數學問題簡單。
非對稱加密系統,加密的稱為公鑰,解密的稱為私鑰,公鑰加密,私鑰解密、私鑰簽名,公鑰驗證。
比特幣加密演算法一共有兩類:非對稱加密演算法(橢圓曲線加密演算法)和哈希演算法(SHA256,RIMPED160演算法)
舉一個例子來說明這個加密的過程:A給B發一個文件,B怎麼知道他接收的文件是A發的原始文件?
A可以這樣做,先對文件進行摘要處理(又稱Hash,常見的哈希演算法有MD5、SHA等)得到一串摘要信息,然後用自己的私鑰將摘要信息加密同文件發給B,B收到加密串和文件後,再用A的公鑰來解密加密串,得到原始文件的摘要信息,與此同時,對接收到的文件進行摘要處理,然後兩個摘要信息進行對比,如果自己算出的摘要信息與收到的摘要信息一致,說明文件是A發過來的原始文件,沒有被篡改。否則,就是被改過的。
數字簽名有兩個作用:
一是能確定消息確實是由發送方簽名並發出來的;
二是數字簽名能確定消息的完整性。
私鑰用來創建一個數字簽名,公鑰用來讓其他人核對私人密鑰,
而數字簽名做為一個媒介,證明你擁有密碼,同時並不要求你將密碼展示出來。
以下為概念的定義:
哈希(Hash):
二進制輸入數據的一種數字指紋。
它是一種函數,通過它可以把任何數字或者字元串輸入轉化成一個固定長度的輸出,它是單向輸出,即非常難通過反向推導出輸入值。
舉一個簡單的哈希函數的例子,比如數字17202的平方根是131.15639519291463,通過一個簡單的哈希函數的輸出,它給出這個計算結果的後面幾位小數,如後幾位的9291463,通過結果9291463我們幾乎不可能推算出它是哪個輸入值的輸出。
現代加密哈希比如像SHA-256,比上面這個例子要復雜的多,相應它的安全性也更高,哈希用於指代這樣一個函數的輸出值。
私鑰(Private key):
用來解鎖對應(錢包)地址的一串字元,例如+。
公鑰(Public keycryptography):
加密系統是一種加密手段,它的每一個私鑰都有一個相對應的公鑰,從公鑰我們不能推算出私鑰,並且被用其中一個密鑰加密了的數據,可以被另外一個相對應的密鑰解密。這套系統使得你可以先公布一個公鑰給所有人,然後所有人就可以發送加密後的信息給你,而不需要預先交換密鑰。
數字簽名(Digital signature):
Digital signature數字簽名是這樣一個東西,它可以被附著在一條消息後面,證明這條消息的發送者就是和某個公鑰相對應的一個私鑰的所有人,同時可以保證私鑰的秘密性。某人在檢查簽名的時候,將會使用公鑰來解密被加密了的哈希值(譯者註:這個哈希值是數據通過哈希運算得到的),並檢查結果是否和這條信息的哈希值相吻合。如果信息被改動過,或者私鑰是錯誤的話,哈希值就不會匹配。在比特幣網路以外的世界,簽名常常用於驗證信息發送者的身份 – 人們公布他們自己的公鑰,然後發送可以被公鑰所驗證的,已經通過私鑰加密過的信息。
加密演算法(encryption algorithm):
是一個函數,它使用一個加密鑰匙,把一條信息轉化成一串不可閱讀的看似隨機的字元串,這個流程是不可逆的,除非是知道私鑰匙的人來操作。加密使得私密數據通過公共的網際網路傳輸的時候不需要冒嚴重的被第三方知道傳輸的內容的風險。
哈希演算法的大致加密流程
1、對原文進行補充和分割處理(一般分給為多個512位的文本,並進一步分割為16個32位的整數)。
2、初始化哈希值(一般分割為多個32位整數,例如SHA256就是256位的哈希值分解成8個32位整數)。
3、對哈希值進行計算(依賴於不同演算法進行不同輪數的計算,每個512位文本都要經過這些輪數的計算)。
區塊鏈中每一個數據塊中包含了一次網路交易的信息,產生相關聯數據塊所使用的就是非對稱加密技術。非對密加密技術的作用是驗證信息的有效性和生成下一個區塊,區塊鏈上網路交易的信息是公開透明的,但是用戶的身份信息是被高度加密的,只有經過用戶授權,區塊鏈才能得到該身份信息,從而保證了數據的安生性和個人信息的隱私性。
公鑰和私鑰在非對稱加密機制里是成對存在的,公鑰和私鑰可以去相互驗證對方,那麼在比特幣的世界裡面,我們可以把地址理解為公鑰,可以把簽名、輸密碼的過程理解為私鑰的簽名。
每個礦工在拿到一筆轉賬交易時候都可以驗證公鑰和私鑰到底是不是匹配的,如果他們是匹配的,這筆交易就是合法的,這樣每一個人只需要保管好TA自己的私鑰,知道自己的比特幣地址和對方的比特幣地址就能夠安全的將比特幣進行轉賬,不需要一個中心化的機構來驗證對方發的比特幣是不是真的。
Ⅵ 哈希加密演算法
MD5即Message-Digest Algorithm 5(信息摘要演算法5),是計算機廣泛使用的散列演算法之一。經MD2、MD3和MD4發展而來,誕生於20世紀90年代初。用於確保信息傳輸完整一致。雖然已被破解,但仍然具有較好的安全性,加之可以免費使用,所以仍廣泛運用於數字簽名、文件完整性驗證以及口令加密等領域。
演算法原理:
散列演算法得到的結果位數是有限的,比如MD5演算法計算出的結果字長為128位,意味著只要我們窮舉2^128次,就肯定能得到一組碰撞,下面讓我們來看看一個真實的碰撞案例。我們之所以說MD5過時,是因為它在某些時候已經很難表現出散列演算法的某些優勢——比如在應對文件的微小修改時,散列演算法得到的指紋結果應當有顯著的不同,而下面的程序說明了MD5並不能實現這一點。
而諸如此類的碰撞案例還有很多,上面只是原始文件相對較小的一個例子。事實上現在我們用智能手機只要數秒就能找到MD5的一個碰撞案例,因此,MD5在數年前就已經不被推薦作為應用中的散列演算法方案,取代它的是SHA家族演算法,也就是安全散列演算法(Secure Hash Algorithm,縮寫為SHA)。
SHA實際包括有一系列演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我們所說的SHA2實際是對後面4中的統稱。各種SHA演算法的數據比較如下表,其中的長度單位均為位:
MD5和SHA1,它們都有4個邏輯函數,而在SHA2的一系列演算法中都採用了6個邏輯函數。
以SHA-1為例,演算法包括有如下的處理過程:
和MD5處理輸入方式相同
經過添加位數處理的明文,其長度正好為512位的整數倍,然後按512位的長度進行分組,可以得到一定數量的明文分組,我們用Y 0 ,Y 1 ,……Y N-1 表示這些明文分組。對於每一個明文分組,都要重復反復的處理,這些與MD5都是相同的。
而對於每個512位的明文分組,SHA1將其再分成16份更小的明文分組,稱為子明文分組,每個子明文分組為32位,我們且使用M[t](t= 0, 1,……15)來表示這16個子明文分組。然後需要將這16個子明文分組擴充到80個子明文分組,我們將其記為W[t](t= 0, 1,……79),擴充的具體方法是:當0≤t≤15時,Wt = Mt;當16≤t≤79時,Wt = ( W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16 ) <<< 1,從而得到80個子明文分組。
所謂初始化緩存就是為鏈接變數賦初值。前面我們實現MD5演算法時,說過由於摘要是128位,以32位為計算單位,所以需要4個鏈接變數。同樣SHA-1採用160位的信息摘要,也以32位為計算長度,就需要5個鏈接變數。我們記為A、B、C、D、E。其初始賦值分別為:A = 0x67452301、B = 0xEFCDAB89、C = 0x98BADCFE、D = 0x10325476、E = 0xC3D2E1F0。
如果我們對比前面說過的MD5演算法就會發現,前4個鏈接變數的初始值是一樣的,因為它們本來就是同源的。
經過前面的准備,接下來就是計算信息摘要了。SHA1有4輪運算,每一輪包括20個步驟,一共80步,最終產生160位的信息摘要,這160位的摘要存放在5個32位的鏈接變數中。
在SHA1的4論運算中,雖然進行的就具體操作函數不同,但邏輯過程卻是一致的。首先,定義5個變數,假設為H0、H1、H2、H3、H4,對其分別進行如下操作:
(A)、將A左移5為與 函數的結果求和,再與對應的子明文分組、E以及計算常數求和後的結果賦予H0。
(B)、將A的值賦予H1。
(C)、將B左移30位,並賦予H2。
(D)、將C的值賦予H3。
(E)、將D的值賦予H4。
(F)、最後將H0、H1、H2、H3、H4的值分別賦予A、B、C、D
這一過程表示如下:
而在4輪80步的計算中使用到的函數和固定常數如下表所示:
經過4輪80步計算後得到的結果,再與各鏈接變數的初始值求和,就得到了我們最終的信息摘要。而對於有多個明文分組的,則將前面所得到的結果作為初始值進行下一明文分組的計算,最終計算全部的明文分組就得到了最終的結果。
Ⅶ 電子合同中,對稱加密、非對稱加密、哈希演算法、CA、時間戳、數字簽名這些是什麼,有什麼用,你們知道嗎
演算法,因為只要你有足夠的時間,完全可以用窮舉法來進行試探,如果說一個加密演算法是牢固的,一般就是指在現有的計算條件下,需要花費相當長的時間才能夠窮舉成功(比如100年)。一、主動攻擊和被動攻擊數據在傳輸過程中或者在日常的工作中,如果沒有密碼的保護,很容易造成文件的泄密,造成比較嚴重的後果。一般來說,攻擊分為主動攻擊和被動攻擊。被動攻擊指的是從傳輸信道上或者從磁碟介質上非法獲取了信息,造成了信息的泄密。主動攻擊則要嚴重的多,不但獲取了信息,而且還有可能對信息進行刪除,篡改,危害後果及其嚴重。 二、對稱加密基於密鑰的演算法通常分為對稱加密演算法和非對稱加密演算法(公鑰演算法)。對成加密演算法就是加密用的密鑰和解密用的密鑰是相等的。比如著名的愷撒密碼,其加密原理就是所有的字母向後移動三位,那麼3就是這個演算法的密鑰,向右循環移位就是加密的演算法。那麼解密的密鑰也是3,解密演算法就是向左循環移動3位。很顯而易見的是,這種演算法理解起來比較簡單,容易實現,加密速度快,但是對稱加密的安全性完全依賴於密鑰,如果密鑰丟失,那麼整個加密就完全不起作用了。比較著名的對稱加密演算法就是DES,其分組長度位64位,實際的密鑰長度為56位,還有8位的校驗碼。DES演算法由於其密鑰較短,隨著計算機速度的不斷提高,使其使用窮舉法進行破解成為可能。三、非對稱加密非對稱加密演算法的核心就是加密密鑰不等於解密密鑰,且無法從任意一個密鑰推導出另一個密鑰,這樣就大大加強了信息保護的力度,而且基於密鑰對的原理很容易的實現數字簽名和電子信封。比較典型的非對稱加密演算法是RSA演算法,它的數學原理是大素數的分解,密鑰是成對出現的,一個為公鑰,一個是私鑰。公鑰是公開的,可以用私鑰去解公鑰加密過的信息,也可以用公鑰去解私鑰加密過的信息。比如A向B發送信息,由於B的公鑰是公開的,那麼A用B的公鑰對信息進行加密,發送出去,因為只有B有對應的私鑰,所以信息只能為B所讀取。牢固的RSA演算法需要其密鑰長度為1024位,加解密的速度比較慢是它的弱點。另外一種比較典型的非對稱加密演算法是ECC演算法,基於的數學原理是橢圓曲線離散對數系統,這種演算法的標准我國尚未確定,但是其只需要192 bit 就可以實現牢固的加密。所以,應該是優於RSA演算法的。優越性:ECC > RSA > DES