摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。
1. 加密的目的
加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將信息轉換回有意義的可讀信息,通過加密可以防止非授權的信息竊取。
2. 存儲加密和傳輸加密按照加密對象的不同,可以將加密分為:存儲加密和傳輸加密。存儲加密是指對存儲在紙質、磁盤、數據庫等介質上的數據進行的加密,而傳輸加密則是指對數據在計算機網絡、電話、電報等通信信道上進行的加密。不管是上述哪種加密,本質上仍是對信息進行加密。
3. 加密算法加密算法,經過歷史的演進,出現了很多種類的算法。我所了解的最簡單的加密算法,就是從電影里看到的,通過一本字典或者圣經,使用頁碼和行列號等來對文字進行一一對應的加密。解密時,只要解密的人拿著相同的字典和圣經,知道數字與文字的對應關系,即可解密。這種加密方法曾經很有效,因為用作加密的字典可以是任何一本書或者甚至可以是一份報紙。
3.1 對稱加密算法按照現代的加密算法劃分,上述的加密方法,可以歸類為對稱加密的范疇。
所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。上面的字典、圣經等也可以理解為是一份秘鑰?,F代的加密算法中,DES、3DES、AES等算法都屬于對稱加密算法。
對稱加密有一個明顯的缺點,就是即秘鑰。特別是在傳輸加密時,信息的發送方和接收方需要使用相同的秘鑰來對信息進行加解密,接收方如何安全的獲取秘鑰成為這類加密的焦點,因為一旦秘鑰被截獲,整個加密通信就形同明文傳輸。
因此,對稱加密比較適合存儲加密,例如有些計算機硬盤會通過主板上的加密芯片對整個硬盤進行加密,使用的就是對稱加密算法。
由于對稱加密在通信加密領域的缺陷,1976年W.Diffie和M.Hellman提出了“非對稱加密”的概念。這種加密算法的秘鑰分為“公開秘鑰”和“私有秘鑰”,公開秘鑰用于對信息進行加密,而解密時使用私有秘鑰進行解密,這樣,信息的接收方可以事先生成好一份公鑰和私鑰,然后將公鑰發給所有的信息發送方,信息發送方使用公鑰對信息進行加密,然后將信息發送給接收方,接收方使用私鑰進行解密即可。這種算法的優勢在于,解密的私鑰不需要傳遞,降低(只能降低,無法避免,要考慮認為因素)了私鑰泄密的可能性。
常見的非對稱加密算法有:RSA、EIGamal、背包算法、Rebin(RSA的特例)、迪菲-赫爾曼密鑰交換協議中的公鑰加密算法和橢圓曲線加密算法等。而最為大家熟知的就是RSA算法。
3.3 比較對稱加密,由于加解密雙發必須擁有相同的秘鑰,分發和同步秘鑰的通信容易泄漏秘鑰,但是對稱加密的速度相比非對稱加密要快很多,特別對于大量數據的加密更加明顯。
非對稱加密,其主要缺點之一就是慢,適合加密少量數據。
因此,實際應用當中,經常將二者結合使用,例如通信雙方建立通信后,A首先生成一對公鑰和私鑰,并將公鑰發送給B,B使用公鑰將一個對稱加密算法的“秘鑰+有效期”加密后,再發回給A,A使用私鑰解密后,雙方便同步了一個對稱算法的秘鑰,然后在規定的有效期內,雙方便可以使用這個秘鑰對通信數據進行加密和解密。其過程大致如下圖所示:
看到這里,有些同學可能會問,我常用的md5、hash算法(sha1、sha256、sha512、sha1024等)怎么沒見你提及,其實準確的說,md5和hash算法不能算是加密算法,它們都屬于信息摘要算法,可以為不同的信息生成獨一無二的信息摘要,而它們都屬于不可逆算法,即無法通過生成的摘要信息還原出原始信息。利用這種特性,實際應用中,經常會使用這些算法對用戶輸入的密碼進行運算,并對運算結果進行比較來驗證用戶輸入密碼是否正確。還有一種應用場景是通信簽名,用于驗證通信過程中信息是否丟失或被篡改。
4. PHP加密最佳實踐加密總是與安全密不可分,而每個PHPer都必須將應用安全作為必要的設計思路融入代碼中,以下是一些最佳實踐的建議。
不要再使用MD5,不要使用sha1,基本上已經沒有破解難度了。
請使用password_hash來哈希密碼(php版本大于等于5.5,小于5.5請使用password_compat庫),由于password_hash函數已幫你處理好了加鹽,而且作為鹽的隨機字串已通過加密算法成為了哈希的一部分,password_verify()函數會自動將鹽從哈希中提取出來,所以你無需考慮鹽的存儲問題。
通信接口的簽名,請使用非對稱算法對簽名秘鑰進行加密,并對秘鑰設置有效期,定期更換。
進一步閱讀:
對稱加密算法
非對稱加密算法
更新后的 PHP: 現代 PHP 中的密碼安全性
PHP編程之道:安全
如果你有任何問題或建議,可以掃描下方二維碼或者微信搜索[phpjiagoushier],關注我的微信公眾號[PHP架構],與我交流互動。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11241.html
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
摘要:使用簡記后端掘金全稱為即消息隊列。優測優社區干貨精選老司機亂談編輯器之神掘金前言是一種信仰,我自從年有了這個信仰,已經個年頭了。 PHP 程序員進階學習書籍參考指南 - 后端 - 掘金PHP程序員進階學習書籍參考指南 @heiyeluren lastmodify: 2016/2/18 ... 當我們在談論前端加密時,我們在談些什么 - 前端 - 掘金潘建旭,豈安科技(www.bigse...
摘要:前言居中是網頁布局中再常見不過的一種方式了,今天我們就來聊聊居中的那點事。我是水平居中的同樣是針對塊級元素才有效果。來看代碼我是水平居中的必須配合來使用來可以實現居中的效果。方法二我是垂直居中的注意此方法要考慮的兼容性問題。 前言:居中是網頁布局中再常見不過的一種方式了,今天我們就來聊聊css居中的那點事。 我們主要從這幾個方面來了解下居中: 水平居中 垂直居中 水平垂直居中 水平...
閱讀 728·2021-08-17 10:11
閱讀 1594·2019-08-30 11:15
閱讀 1017·2019-08-26 13:54
閱讀 3502·2019-08-26 11:47
閱讀 1212·2019-08-26 10:20
閱讀 2816·2019-08-23 18:35
閱讀 1213·2019-08-23 17:52
閱讀 1297·2019-08-23 16:19