前言

在數字時代、數據就像錢一樣金貴,甚至有時候比錢還要寶貴。無論是企業做系統開發,還是個人用各種APP,背後總有一堆加密算法在默默撐場子。今天我們就來聊聊什麼是對稱加密,什麼是非對稱加密

對稱加密與非對稱加密

對稱加密

對稱秘鑰就是加密和解密使用相同的秘鑰,所謂的秘鑰就是一段數據,我們使用秘鑰對數據進行加密,需要進行解密時我們只需要使用相同的秘鑰進行解密就可以了

對稱加密的算法有幾個很重要的優勢:快、效率高,適合處理大量數據

缺點也很明顯:那就是鑰匙怎麼安全的傳遞給對方,這裏這麼説大家可能很難理解,我們所説的鑰匙也就是加密算法的秘鑰,所謂的秘鑰無非就是一段數據,一旦秘鑰泄露那任何都都能解密使用該秘鑰加密的數據。那這段數據怎麼才能安全的交給對方就成了困難了,通過網絡發送難免會泄露,通過郵寄等方式時間成本又很高。

非對稱加密

所謂非對稱加密和對稱加密的最大區別就是它有兩個秘鑰,一個公鑰一個私鑰,顧名思義,公鑰是可以公開的秘鑰,私鑰是需要自己保管,需要保密的秘鑰。數據使用公鑰或私鑰進行加密後只能使用對應的私鑰或公鑰才能進行解密。

那非對稱加密有什麼作用呢?舉個例子,我們把公鑰進行公開,其他人想要給我發送數據,那其他人只需要使用公鑰進行加密,我拿到數據後使用私鑰進行解密即可,由於公鑰是公開的,那我也就根本不需要對公鑰是否會被泄露而操心了。如果我需要向對方發送數據,那隻需要讓對方把公鑰告訴我,我使用對方的公鑰進行加密,對方拿到密文數據後使用他的私鑰進行解密即可

這麼看起來非對稱加密簡直不要太好用,但是其實非對稱加解密也有缺點,那就是速度太慢了,加解密的速度要遠遠低於對稱秘鑰

不知道大家有沒有發現上面的場景中有什麼問題,那就是我們如何確保對方給我的公鑰就是對方的而不是其他人偽造的公鑰呢?在或者説我如何確認對方發給我的密文數據就是對方的而不是其他人再得到公鑰後偽造的密文數據呢?這裏先留一個疑問,我們在下一篇文章中介紹簽名和證書中再進行講解

對稱秘鑰的傳輸問題

那如果我有一段很大的數據需要發送給對方我們應該選用什麼樣的加密算法呢?選擇對稱加密秘鑰的安全本身就是個問題,但是如果選擇非對稱加密,那加解密的速度又無法滿足我們的需求

不知道在上面為大家介紹了對稱加密與非對稱加密後大家有沒有想到解決方案呢?下面我來揭露答案,那就是對稱加密和非對稱加密結合起來一起使用。數據我們使用對稱加密的方式進行加密,加密完成後我們使用非對稱加密的方式將對稱秘鑰發送給對方,因為秘鑰的數據並不會很大,所以性能問題我們是完全可以接受的,這樣我們依靠非對稱秘鑰的優勢將秘鑰安全的傳送給了對方,對方接收到對稱秘鑰後又可以使用對稱加密的效率優勢了