探秘加密算法
- 2020 年 1 月 2 日
- 筆記
前言
應工信部關於APP數據安全的要求,項目中涉及到用戶個人隱私的信息如手機號碼、驗證碼、用戶userID等都在信息傳輸和本地存儲時都需要進行加密處理。 信息加密是前後端開發都經常需要使用到的技術,應用場景涉及用戶登入、交易、信息通訊、oauth 等等,不同的應用場景也會需要使用到不同的加密算法。 下面小編給大家分享一些常見的加密算法。
加密算法介紹
加密和解密 數據加密的基本過程,就是對原來為明文的文件或數據按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為「密文」。通過這樣的途徑,來達到保護數據不被非法人竊取、閱讀的目的。 加密的逆過程為解密,即將該編碼信息轉化為其原來數據的過程。 加密算法應用 在數據安全領域,利用加密算法來對通信的過程進行加密是一種常見的手段。利用該手段能夠保障數據安全通信的三個目標: 1)數據的保密性,防止用戶的數據被竊取或泄露; 2)保證數據的完整性,防止用戶傳輸的數據被篡改; 3)通信雙方的身份確認,確保數據來源與合法的用戶;
常見加密算法
加密算法分類 根據加密結果是否可以被解密,算法可以分為可逆加密和不可逆加密(單向加密),從這個意義上來說,單向加密只能稱之為加密算法而不是加解密算法。對於可逆加密,又可以根據密鑰的的對稱性分為對稱加密和非對稱加密。 因此,常見的加密算法類型大體可以分為三類:對稱加密、非對稱加密、單向加密。其中對稱加密算法的加密與解密密鑰相同,非對稱加密算法的加密密鑰與解密密鑰不同。 下面對這三類加密算法分別進行介紹。 1. 對稱加密 對稱加密算法介紹 對稱加密算法,又稱為共享密鑰加密算法。在對稱加密算法中,使用的密鑰只有一個,發送和接收雙方都使用這個密鑰對數據進行加密和解密。這就要求加密和解密方事先都必須知道加密的密鑰。

常見的對稱加密算法 DES:分組式加密算法,以64位為分組對數據加密,加解密使用同一個算法。 3DES:三重數據加密算法,對每個數據塊應用三次DES加密算法。 AES:高級加密標準算法,是美國聯邦政府採用的一種區塊加密標準,用於替代原先的DES,目前已被廣泛應用。 1)AES/DES/3DES算法 AES、DES、3DES 都是對稱的塊加密算法,加解密的過程是可逆的。 DES加密算法是一種分組密碼,以64位為分組對數據加密,它的密鑰長度是56位,加密解密用同一算法。 DES加密算法是對密鑰進行保密而公開算法(包括加密和解密算法)。這樣,只有掌握了和發送方相同密鑰的人才能解讀由DES加密算法加密的密文數據。因此,破譯DES加密算法實際上就是搜索密鑰的編碼。對於56位長度的密鑰來說,如果用窮舉法來進行搜索的話,其運算次數為2 ^ 56 次。 2)3DES算法 3DES算法是基於DES 的對稱算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高。 3)AES算法 AES加密算法是密碼學中的高級加密標準,該加密算法採用對稱分組密碼體制,密鑰長度的最少支持為128 位、192 位、256 位,分組長度128 位,算法應易於各種硬件和軟件實現。這種加密算法是美國聯邦政府採用的區塊加密標準。 AES 本身就是為了取代DES的,AES具有更好的安全性、效率和靈活性。 對稱算法特點 密鑰管理:比較難,不適合互聯網,一般用於內部系統; 安全性:中; 加密速度:快好幾個數量級 (軟件加解密速度至少快 100 倍,每秒可以加解密數 M 比特數據),適合大數據量的加解密處理 2. 非對稱加密 非對稱加密算法介紹 非對稱加密算法,又稱為公開密鑰加密算法。它需要兩個密鑰,一個稱為公開密鑰 (public key),即公鑰,另一個稱為私有密鑰 (private key),即私鑰。因為加密和解密使用的是兩個不同的密鑰,所以這種算法稱為非對稱加密算法。

公鑰和私鑰是成對存在,如果使用公鑰對數據進行加密,只有用對應的私鑰才能進行解密。如果使用私鑰對數據 進行加密,只有用對應的公鑰才能進行解密。 舉個例子,甲方生成一對密鑰並將其中的一把作為公鑰向其它人公開,得到該公鑰的 乙方使用該密鑰對機密信息 進行加密後再發送給甲方,甲方再使用自己保存的另一把專用密鑰 (私鑰),對加密後的信息進行解密。 常見的非對稱加密算法 常見的非對稱加密算法有RSA、DSA、ECC 等。 1)RSA算法 RSA 加密算法是目前最有影響力的公鑰加密算法,並且被普遍認為是目前最優秀的公鑰方案之一。RSA是第一個能同時用於加密和數字簽名的算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標準。 RSA加密算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但想要對其乘積進行 因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。 2)ECC算法 ECC 也是一種非對稱加密算法,主要優勢是在某些情況下,它比其他的方法使用更小的密鑰,比如RSA加密算法,提供相當的或更高等級的安全級別。不過一個缺點是加密和解密操作的實現比其他機制時間長 (相比 RSA算法,該算法對CPU消耗嚴重)。 非對稱算法特點 密鑰管理:密鑰容易管理; 安全性:高; 加密速度:比較慢,適合小數據量加解密或數據簽名; 3. 單向加密 單向加密算法介紹 單向加密的結果是不可以被解密的,因此,單向加密的主要用途並不是傳統意義上的加解密工作,而是用於提取數據指紋,驗證數據的完整性。 發送者將要傳輸的數據通過單向加密算法進行一次單向加密,得到數據指紋。當接收方收到數據之後,使用相同的單向加密算法也進行一次單向加密,如果得到的數據指紋相同,則可以認為數據在傳輸過程中沒有損壞。若不一致,說明傳輸過程中數據丟失了。 單向加密算法只能用於對數據的加密,無法被解密,其特點為定長輸出、雪崩效應。

常見的單向加密算法 常見的算法包括:MD5、SHA1、SHA224等。 1)MD5算法 MD5 用的是 哈希函數,它的典型應用是對一段信息產生信息摘要,以 防止被篡改。嚴格來說,MD5 不是一種加密算法而是摘要算法。無論是多長的輸入,MD5 都會輸出長度為 128bits 的一個串 (通常用 16 進制 表示為 32 個字符)。 2)SHA1算法 SHA1 是和 MD5 一樣流行的消息摘要算法,然而SHA1比MD5的安全性更強。對於長度小於2 ^ 64位的消息,SHA1會產生一個160 位的消息摘要。基於MD5、SHA1 的信息摘要特性以及不可逆 (一般而言),可以被應用在檢查文件完整性以及數字簽名等場景。 MD5和SHA1的區別:MD5結果是128位摘要,SHa1是160位摘要。那麼MD5的速度更快,而SHA1的強度更高。 單向加密算法應用 以MD5為例進行說明,主要用途有:驗證消息完整性,安全訪問認證,數據簽名。 消息完整性:由於每一份數據生成的MD5值不一樣,因此發送數據時可以將數據和其MD5值一起發送,然後就可以用MD5驗證數據是否丟失、修改。 安全訪問認證:這是使用了算法的不可逆性質,(就是無法從MD5值中恢復原數據)對賬號登陸的密碼進行MD5運算然後保存,這樣可以保證除了用戶之外,即使數據庫管理人員都無法得知用戶的密碼。 數字簽名:這是結合非對稱加密算法和CA證書的一種使用場景。 一般破解方法:字典法,就是將常用密碼生成MD5值字典,然後反向查找達到破解目的,因此建議使用強密碼。
文章參考
https://juejin.im/post/5b48b0d7e51d4519962ea383#heading-17 https://www.jianshu.com/p/ce3893a7be09