最近開始做金融項目,接觸了加密算法,在這里做個總結,加深認識。
目前比較常用的加密算法總結起來就是單向加密和雙向加密了,很少對吧,理解起來也不算很難。
什么是單向加密?
通俗來說,就是通過對數據進行摘要計算生成密文,密文不可逆推還原。算法代表:MD5、SHA、MAC、CRC等。
什么是雙向加密?
而雙向加密算法,與單向加密正好相反,就是可以把密文逆推還原成明文,雙向加密又分為對稱加密和非對稱加密。
什么是對稱加密?
采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
常用算法:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。
對稱加密的優點:加密計算量小、速度塊,適合對大量數據進行加密的場景。
對稱加密的缺點:
1、密鑰傳輸問題:
如上所說,由於對稱加密的加密和解密使用的是同一個密鑰,所以對稱加密的安全性就不僅僅取決於加密算法本身的強度,更取決於密鑰是否被安全的保管,因此加密者如何把密鑰安全的傳遞到解密者手里,就成了對稱加密面臨的關鍵問題。(比如,我們客戶端肯定不能直接存儲對稱加密的密鑰,因為被反編譯之后,密鑰就泄露了,數據安全性就得不到保障,所以實際中我們一般都是客戶端向服務端請求對稱加密的密鑰,而且密鑰還得用非對稱加密加密后再傳輸。)
2、密鑰管理問題:
再者隨着密鑰數量的增多,密鑰的管理問題會逐漸顯現出來。比如我們在加密用戶的信息時,不可能所有用戶都用同一個密鑰加密解密吧,這樣的話,一旦密鑰泄漏,就相當於泄露了所有用戶的信息,因此需要為每一個用戶單獨的生成一個密鑰並且管理,這樣密鑰管理的代價也會非常大。
對稱加密工作過程簡要示意圖:

什么是非對稱加密?
與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
常用算法:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
非對稱加密的優點:安全性更好。
非對稱加密的缺點:加密和解密花費時間長、速度慢,只適合對少量數據進行加密。
非對稱加密工作過程簡要示意圖:

工作流程:
1、乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密后再發送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密后的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密后的信息。
在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那么需要甲先公布甲的公鑰給乙用於加密,甲自己保存甲的私鑰用於解密。
對稱加密和非對稱加密簡要工作流程圖:

原文:https://blog.csdn.net/qq_34573534/article/details/90409232
