php的雜湊函式

2021-09-01 11:53:15 字數 1379 閱讀 2480

雜湊函式:

echo password_hash("rasmuslerdorf", password_default)."\n";

驗證函式:

boolean password_verify ( string$password, string$hash)

比如if (password_verify('rasmuslerdorf', $hash))  else 

ci框架的手冊裡有這樣一段話:

在你的應用程式中正確處理密碼是非常關鍵的。

但是不幸的是,許多開發者並不知道怎麼去做,而且網路上充斥著大量過時的 甚至錯誤的建議,提供不了任何幫助。

我們提供了乙個清單來幫助你,告訴你什麼該做,什麼不該做。

絕不要以明文儲存密碼。

永遠使用 雜湊演算法 來處理密碼。

絕不要使用 base64 或其他編碼方式來儲存密碼。

這和以明文儲存密碼是一樣的,使用 雜湊 ,而不要使用 編碼 。

編碼以及加密,都是雙向的過程,而密碼是保密的,應該只被它的所有者知道, 這個過程必須是單向的。雜湊正是用於做這個的,從來沒有解雜湊這種說法, 但是編碼就存在解碼,加密就存在解密。

絕不要使用弱雜湊或已被破解的雜湊演算法,像 md5 或 sha1 。

這些演算法太老了,而且被證明存在缺陷,它們一開始就並不是為了儲存密碼而設計的。

另外,絕不要自己發明演算法。

只使用強密碼雜湊演算法,例如 bcrypt ,在 php 自己的 密碼雜湊 函式中也是使用它。

即使你的 php 版本不是 5.5+ ,也請使用它們,codeigniter 為你提供了這些演算法。

如果你連公升級 php 也無法做到,那麼使用 hash_pbkdf() 吧, 為實現相容性我們提供了這個函式。

絕不要以明文形式顯示或傳送密碼。

即使是對密碼的所有者也應該這樣。如果你需要 "忘記密碼" 的功能,可以隨機生成乙個新的 一次性的(這點很重要)密碼,然後把這個密碼傳送給使用者。

絕不要對使用者的密碼做一些沒必要的限制。

如果你使用除 bcrypt(它有最多 72 字元的限制)之外的其他雜湊演算法,你應該設定乙個相對長一點的密碼長度(例如 1024 字元),這樣可以緩解 dos 攻擊。

但是除此之外,對密碼的其他限制諸如密碼中只允許使用某些字元,或者密碼中不允許包含某些字元,就沒有任何意義了。

這樣做不僅不會提高安全性,反而 降低了 安全性,而且真的沒有任何理由需要這樣做。 只要你對密碼進行雜湊處理了,那麼無論是技術上,還是在儲存上都沒有任何限制。

refer:

author:寫樂~~

php安全之密碼雜湊處理:

這個是應用,分別是使用md5+salt和password_hash兩種方式

雜湊函式(雜湊函式,Hash Function)

說明 雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為o 1 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。下圖 於維基百科 雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料...

雜湊函式 雜湊函式 演算法

常用字串雜湊函式有bkdrhash,aphash,djbhash,jshash,rshash,sdbmhash,pjwhash,elfhash等等。c 實現 include define m 249997 define m1 1000003 define m2 10000019 大素數 using ...

如何解決PHP雜湊函式的碰撞

最近想使用hash函式來根據乙個字串來生成乙個惟一的值,但是沒找到好用的hash函式,像php內建的md5 sha等雜湊函式生成的值太長,我沒法用,想擷取,這樣做又擔心會出現雜湊碰撞,特來拜求高人們用的是什麼雜湊函式 雖然說採用什麼雜湊演算法要看資料而定,但連md5再嫌長,可真的有些難辦了。其實我很...