加密的目的
#加密不同於密碼,加密是一個動作或過程,其目的就是將一段明文訊息(人類或機器可以直接讀懂的訊息)變為一段看上去沒有任何意義的字符,必須透過事先約定的解密規則才能將訊息轉換回有意義的可讀訊息,透過加密可以防止非授權的資訊竊取。
PHP加密函數(推薦學習:PHP程式設計從入門到精通)
PHP的加密函數有crypt()、 md5()和sha1() 這3種, 其中crypt() 用於單向加密, 所謂的單向加密就是將需要加密的內容進行加密之後, 無法將密文轉換成為可讀的內容, 因此單向加密的應用範圍較狹窄, 一般用於使用者名稱認證和密碼輸入等情況; 當使用者進入系統時,只需要將密文口令輸入,經過系統驗證與儲存的口令一致, 即可通過。
md5()和sha1()屬於哈希演算法,它是不可逆的一種演算法,透過截取任一段的初始訊息,將其轉換,所得到的內容就是哈希值,且長度固定。這樣即使資訊遺失, 對雜湊值進行分析也是無意義的,因為它與原來的資訊並無直接聯繫, 因此具備較強的加密功能。 md5() 使用了MD5雜湊演算法, 將一個長度不固定的資訊轉換為128位元的資訊摘要。
sha1() 函數使用了SHA-1的雜湊演算法,其原理與md5() 類似。
md5() 和sha1() 經常用於驗證資訊的完整性, 即透過計算檔案的雜湊值來驗證檔案是否被修改,因此在PHP中還需要兩個函數來對雜湊值進行計算, md5_file() 和sha1_file(), 一旦發現計算出的雜湊值與原始值不同,就可以判斷檔案遭到了修改。
這3種函數雖然操作簡單,但是都是不可逆的, 無法對密文進行解讀;但是在更高層次的加密工作中,這些簡單的加密函數的加密效果就顯得有些捉襟見肘了。
加密總是與安全性密不可分,而每個PHPer都必須將應用安全性作為必要的設計思路融入程式碼中,以下是一些最佳實踐的建議。
不要再使用MD5,不要使用sha1,基本上已經沒有破解難度了。
請使用password_hash來雜湊密碼(php 版本大於等於5.5,小於5.5 請使用password_compat 函式庫),由於password_hash函式已幫你處理好了加鹽,而且作為鹽的隨機字串已通過加密演算法變成了哈希的一部分,password_verify()函數會自動將鹽從哈希中提取出來,所以你無需考慮鹽的儲存問題。
通訊介面的簽名,請使用非對稱演算法對簽名秘鑰進行加密, 並對秘鑰設定有效期,定期更換。
以上是php是否可以加密部署的詳細內容。更多資訊請關注PHP中文網其他相關文章!