淺析 Aes 和 Rsa 加密算法的區別和適用場景
信息數據傳輸的安全一直都是個很重要的話題,從剛開始當程序員時錯以為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密鑰,再用該密鑰對數據進行解密。


























