淺析AES和RSA加密演算法的區別和適用場景

語言: CN / TW / HK

資訊資料傳輸的安全一直都是個很重要的話題,從剛開始當程式設計師時錯以為MD5、SHA1這些雜湊演算法就是加密演算法,到後來慢慢接觸對稱加密、非對稱加密這些概念,再到對接各種大開發平臺介面的時候看到他們通過 RSA 進行簽名配合 AES 加密報文這些方式防止介面引數被篡改和資訊洩露。今天就簡單的梳理一下兩種加密演算法的區別和各自適用的場景。

加密演算法的分類

加密的基本思想是將資料轉換成一種掩蓋了原始含義的形式,只有經過適當授權的人才能解密。使用相同或不同的金鑰對資料進行加解密,如果加密和解密使用相同的金鑰,則稱該過程是對稱的。如果使用不同的金鑰,則該過程被定義為非對稱的。

當今使用最廣泛的兩種加密演算法是 AES 和 RSA。兩者都非常有效和安全,但它們通常以不同的方式使用。

AES 加密

AES 演算法依次對每個 128 位資料塊應用一系列數學變換。由於這種方法的計算要求較低,AES 可用於膝上型電腦和智慧手機等消費類裝置上進行資料加密,以及快速加密大量資料。

AES 是一種對稱演算法,它使用相同的 128、192 或 256 位金鑰進行加密和解密。128、192 或 256 位的金鑰可以理解為分別對應16、24和32個位元組的16進位制字串金鑰,AES 系統的安全性會隨金鑰長度呈指數增長。

即使使用 128 位金鑰,通過對 2128 個可能的金鑰值進行暴力列舉,來嘗試破解 AES加密後的資料的任務也是個非常計算密集型的任務。事實上,AES 從未被破解,並且根據當前的技術趨勢,預計在未來幾年內仍將保持安全。

RSA 加密

RSA 以麻省理工學院的科學家(Rivest、Shamir 和 Adleman)的名字命名, 於1977 年首次公佈。它是一種非對稱演算法,它使用公開的已知金鑰進行加密,但需要另外一個不同的金鑰進行解密,這個不同的金鑰只有預期的接收者知道。

網上不少例子說的是公鑰用於加密,私鑰用於解密,其實這個說法不對, 私鑰和公鑰是一對,都可以加解密,配對使用,只不過公鑰可以公佈出去,而私鑰是持有者自己保留的

一般的用法是私鑰加密用於簽名防資料被篡改,公鑰加密用於加密防敏感資訊,防止洩露。

  • 私鑰加密公鑰解密,能證明“私鑰擁有者” 的唯一身份,用於簽名。

  • 公鑰加密私鑰解密,確保傳送的資訊,只有"私鑰擁有者"能夠解密。

這塊先賣個關子,理解不了的話後面給大家介紹開放平臺API驗籤和加密流程的時候再給大家細講。

RSA 演算法需要的計算量比 AES 高,但速度要慢得多。它比較適合用於加密少量資料。

RSA和AES結合使用

AES 演算法的一個主要問題是,作為一種對稱演算法,它要求加密方和解密方使用相同的金鑰。這就產生了一個關鍵的金鑰管理問題——如何將非常重要的金鑰分發給分佈在世界各地的授權接收者,而不會冒在傳輸途中某個地方考慮不周導致金鑰洩露的巨大風險?答案是結合 AES 和 RSA 加密的優勢。

在包括網際網路在內的許多現代通訊環境中,大量交換的資料都通過快速 AES 演算法進行加密。為了獲得解密資料所需的金鑰, 授權接收者釋出一個公鑰,同時保留一個只有他們知道的相關私鑰。然後,傳送方使用該公鑰對他們自己的 AES 金鑰進行RSA加密傳輸給接收方 ,接收方使用私鑰解密得到AES金鑰,再用該金鑰對資料進行解密。

- END -

掃碼關注公眾號「網管叨bi叨」

給網管個星標,第一時間吸我的知識 :point_up_2:

網管為大家整理了一本超實用的《Go 開發參考書》收集了70多條開發實踐。去公眾號回覆【gocookbook】即刻領取!

覺得有用就點個在看   :point_down::point_down::point_down: