加密算法是網絡安全中不可缺乏的一部分,那我一般們何時須要使用加密算法呢?算法
加密數據:保證數據的私密性。例如帳號以及一些我的信息在傳輸和存儲以前都須要加密處理,這樣即便別人拿到數據也只是一堆看不懂的密文。
身份驗證:確保訪問者爲指定的用戶或者系統,例如一些網站或者網銀鬚要安裝證書纔可使用,這些證書都是由數字證書認證機構(CA)發放的。
數據完整性:防止數據在傳輸過程當中被篡改。
加密算法能夠分爲:單向加密算法、對稱加密算法和非對稱加密算法。安全
單向加密算法:網絡
算法不可逆,即經過密文沒法還原原始數據。
輸入一致,輸出一定一致,而且輸出長度固定(128位)。
細微的變化會生成徹底不一樣的密文。
通常適用於數據驗證,經過再次輸入明文,用相同的算法加密,看可否獲得相同的密文來判斷輸入的正確性,例如用戶登陸密碼的驗證。能夠作到數據加密,但沒法保證數據完整性和身份驗證。
常見的單向加密算法有:MD五、SHA、HMAC、CRC網站
對稱加密算法:加密
算法可逆,對密文進行解密算法便可獲得明文。
速度要比非對稱加密算法快。
由於算法是可逆的,因此對稱加密算法的安全性就創建在祕鑰的基礎上,若是A和B的祕鑰相同,而且B拿到A傳輸的密文,那麼B就能夠將密文解密,因此必須保證全部人的祕鑰都不一樣,這樣若是使用者增多,對稱加密算法的管理難度就會增長。
常見的對稱加密算法有DES、3DES、AES、Blowfish、IDEA、RC四、RC五、RC6。網絡安全
非對稱加密算法:登錄
是一對加密祕鑰和解密祕鑰,A用戶祕鑰加密後信息,只有A的解密祕鑰才能解密,而且知道其中一個並不能算出另一個。公開的密鑰爲公鑰,不公開的密鑰爲私鑰。
若是加密密鑰是公開的,這用於客戶給私鑰全部者上傳加密的數據,這被稱做爲公開密鑰加密(狹義)。例如,網絡銀行的客戶發給銀行網站的帳戶操做的加密數據。若是解密密鑰是公開的,用私鑰加密的信息,能夠用公鑰對其解密,用於客戶驗證持有私鑰一方發佈的數據或文件是完整準確的,接收者由此可知這條信息確實來自於擁有私鑰的某人,這被稱做數字簽名,公鑰的形式就是數字證書。例如,從網上下載的安裝程序,通常都帶有程序製做者的數字簽名,能夠證實該程序的確是該做者(公司)發佈的而不是第三方僞造的且未被篡改過(身份認證/驗證)。
常見的公鑰加密算法有:RSA、ElGamal、揹包算法、Rabin(RSA的特例)、迪菲-赫爾曼密鑰交換協議中的公鑰加密算法、橢圓曲線加密算法。基礎