本篇文章向大家介紹PHP的Hash信息摘要擴(kuò)展框架,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。
今天我們主要學(xué)習(xí)的是 PHP 中一些 Hash 散列加密相關(guān)的擴(kuò)展函數(shù)的使用,而不是 Hash 算法,這種加密其實(shí)也只是一種更復(fù)雜一些的密鑰算法,與 Hash 算法類(lèi)似的是,我們輸入的一串字符串,就像一個(gè) Hash 表一樣有其對(duì)應(yīng)的 Hash 散列值,本質(zhì)上和普通的數(shù)據(jù)結(jié)構(gòu)中的 Hash 鍵值映射是一個(gè)道理,只是其算法更復(fù)雜一些。其實(shí)只要做過(guò)一段時(shí)間的 PHP 開(kāi)發(fā),一定會(huì)對(duì)兩個(gè)函數(shù)很熟悉,它們就是 md5() 和 sha1() 。這兩個(gè)函數(shù)就是分別生成 md5 和 sha1 算法的 Hash 加密。不過(guò),今天我們學(xué)習(xí)的相比這兩個(gè)函數(shù)更加的復(fù)雜一些,算法形式也更豐富一些。
什么是 Hash 信息摘要算法
通常,我們將一段內(nèi)容輸入一個(gè) Hash 函數(shù)后,返回的一串散列字符串就是這個(gè)輸入值的 Hash 信息摘要。在 PHP 中,不管是 md5 還是 sha1 ,同樣的輸入會(huì)產(chǎn)生同樣的結(jié)果。由此,如果在保存用戶(hù)密碼類(lèi)的信息時(shí),我們盡量不要只使用一層 Hash ,因?yàn)檫@種形式的加密是可以通過(guò)彩虹表暴力破解出來(lái)的。我們可以對(duì)密碼進(jìn)行多層 Hash 并加鹽來(lái)實(shí)現(xiàn)散列值的復(fù)雜化。
當(dāng)然,Hash 算法并不止我們常用的 md5 和 sha1 ,還有很多其它類(lèi)型的算法,只是我們并不常用。但是,今天介紹的函數(shù)正是可以進(jìn)行多種不同類(lèi)型的 Hash 加密的一組函數(shù),它們已經(jīng)在 PHP 中集成到了默認(rèn)環(huán)境中,我們并不需要單獨(dú)的擴(kuò)展就可以使用,這樣,就為我們的加密數(shù)據(jù)多樣化帶來(lái)了