最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
PHP實(shí)現(xiàn)基于PBKDF2標(biāo)準(zhǔn)的password_hash和password_verify函數(shù)是怎樣的

PHP實(shí)現(xiàn)基于PBKDF2標(biāo)準(zhǔn)的password_hash和password_verify函數(shù)是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司主營(yíng)加格達(dá)奇網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App定制開(kāi)發(fā),加格達(dá)奇h5微信小程序開(kāi)發(fā)搭建,加格達(dá)奇網(wǎng)站營(yíng)銷(xiāo)推廣歡迎加格達(dá)奇等地區(qū)企業(yè)咨詢

最近國(guó)家對(duì)網(wǎng)絡(luò)安全要求很?chē)?yán)格,我們產(chǎn)品的合作伙伴要求我們使用PBKDF2標(biāo)準(zhǔn)來(lái)存儲(chǔ)密碼。由于對(duì)這個(gè)標(biāo)準(zhǔn)不熟悉,于是我做了點(diǎn)功課。

一個(gè)基本的常識(shí),用戶的密碼不能明文存儲(chǔ),不然,一旦黑客獲取到了數(shù)據(jù)庫(kù)信息,密碼就直接泄露了。

升級(jí)一點(diǎn),密碼直接使用sha1或者更高安全的sha2算法,生成散列值,存入數(shù)據(jù)庫(kù),大部分的密碼存儲(chǔ)就是這樣設(shè)計(jì)的。這樣是否就足夠安全了呢?

不是,因?yàn)楹诳鸵廊豢梢允褂貌屎绫砗捅┝ζ平獾姆绞狡平饷艽a。

要解決這兩個(gè)問(wèn)題,就要做到以下兩點(diǎn):

1. 密碼生成過(guò)程中加入隨機(jī)salt,做到同一個(gè)密碼每次hash值都不同,使彩虹表失效。

2. 加密算法的運(yùn)行速度相對(duì)比較慢,這樣會(huì)使黑客的暴力破解成本增加。

目前主流的密碼存儲(chǔ)算法有bcrypt和PBKDF2等,PHP從5.5開(kāi)始加入了password_hash和password_verify函數(shù),內(nèi)置支持了bcrypt算法,如果想加強(qiáng)密碼存儲(chǔ)的安全性,對(duì)算法沒(méi)有特別要求,可以直接使用。

然而對(duì)于需要使用PBKDF2標(biāo)準(zhǔn)處理加密存儲(chǔ),就沒(méi)有現(xiàn)成的函數(shù)可以使用了,不過(guò)PHP在5.5開(kāi)始加入了hash_pbkdf2函數(shù),于是使用這個(gè)函數(shù)我實(shí)現(xiàn)了基于PBKDF2標(biāo)準(zhǔn)的password_hash以及password_verify函數(shù)。代碼如下:

function password_hash_pbkdf2($password){
    $iterations=1000;
    $length=30;
    $salt = openssl_random_pseudo_bytes(8);
    $salt_encode=base64_encode($salt);
    $hash = hash_pbkdf2("sha256", $password, $salt, $iterations, $length);
    return $hash.$salt_encode;
}

function password_verify_pbkdf2($password,$hash){
    $iterations=1000;
    $length=30;
    $passhash=substr($hash,0,$length);
    $salt=base64_decode(substr($hash,$length));
    $passhash3=hash_pbkdf2("sha256", $password, $salt, $iterations, $length);
    if($passhash==$passhash3){
        return true;
    }
    return false;
}

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。


名稱(chēng)欄目:PHP實(shí)現(xiàn)基于PBKDF2標(biāo)準(zhǔn)的password_hash和password_verify函數(shù)是怎樣的
URL網(wǎng)址:http://fisionsoft.com.cn/article/iecgps.html