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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Yii2——密碼加密算法-創(chuàng)新互聯(lián)

1.1  密碼加密算法

參考文檔:

創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設服務有成都網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)絡營銷策劃、網(wǎng)頁設計、網(wǎng)站維護、公眾號搭建、微信小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設解決方案。創(chuàng)造真正意義上的網(wǎng)站建設,為互聯(lián)網(wǎng)品牌在互動行銷領域創(chuàng)造價值而不懈努力!

1、更新后的 PHP: 現(xiàn)代 PHP 中的密碼安全性;

2、http://php.net/manual/zh/function.password-hash.php

3、http://php.net/manual/zh/function.password-verify.php

1.1.1  user表結(jié)構(gòu)

Yii 2默認用user表保存賬號信息,包括用戶的密碼,user表結(jié)構(gòu)如下:

id


username

賬號

auth_key


password_hash

保存密碼的hash值

password_reset_token

忘記密碼,重置密碼用的token

email


status


created_at


updated_at


1.1.2  核心知識點

1.1.2.1加密

PHP 5.5以后,提供了新的密碼加密函數(shù)password_hash(),這個加密函數(shù)有三個參數(shù),第一個參數(shù)就是待加密的密碼,第二個參數(shù)是加密算法,推薦使用PASSWORD_DEFAULT,這樣可以隨著PHP的升級,自動選用新的升級算法,第三個參數(shù)是加密算法執(zhí)行次數(shù),一般來說次數(shù)越多,密碼強度越大,但是花費的時間越多。

1.1.2.2校驗

使用password_hash()加密時,每調(diào)用一次就會使用新的solt,所以即使是同樣的密碼,每次調(diào)用password_hash()的結(jié)果都是不一樣的。

一般傳統(tǒng)的MD5類方式加密密碼時,判斷輸入的密碼是否正確,就是重新用加密算法把密碼再加密一次,然后判斷加密的結(jié)果與數(shù)據(jù)庫中保存的是否一致。現(xiàn)在使用這樣的方式來校驗密碼自然是不行的了(注:ecshop和ectouch就是用這種方法存密碼的)。

PHP提供了password_verify()函數(shù)用來校驗密碼是否正確,這個函數(shù)有兩個參數(shù),第一個是用戶輸入的密碼,第二個參數(shù)是事先保存的密碼hash值。既然每次調(diào)用password_hash()的返回值都不一樣,那password_verify()又是怎么確認密碼是正確的呢?

根據(jù)PHP官網(wǎng)對于該函數(shù)的說明:

“注意 password_hash() 返回的哈希包含了算法、 cost 和鹽值。 因此,所有需要的信息都包含內(nèi)。使得驗證函數(shù)不需要儲存額外鹽值等信息即可驗證哈希?!?/p>

1.1.3  Yii 2的封裝

Yii 2提供了一個Security類,將上面的密碼加密和驗證函數(shù)封裝起來,并且增加了對于低版本PHP的支持。

  • generatePasswordHash

生成密碼的哈希值,調(diào)用password_hash()實現(xiàn)。

  • validatePassword

校驗密碼是否正確,調(diào)用password_verify()實現(xiàn)。

在框架中使用Security類,無需自己初始化,Yii 2框架已經(jīng)默認創(chuàng)建了Security類的實例,使用如下代碼訪問即可:

Yii::$app->security->validatePassword($password, $this->password_hash);

//或者

Yii::$app->getSecurity()->hashData(serialize([$cookie->name, $value]), $validationKey)

Security類的初始化?在base\Application.php中的preInit()函數(shù)中調(diào)用coreComponents()函數(shù)獲得所配置的security屬性對應的類路徑:

public functioncoreComponents()
 {
    return[
         'log' => ['class' => 'yii\log\Dispatcher'],
         'view' => ['class' => 'yii\web\View'],
         'formatter' => ['class' => 'yii\i18n\Formatter'],
         'i18n' => ['class' => 'yii\i18n\I18N'],
         'mailer' => ['class' => 'yii\swiftmailer\Mailer'],
         'urlManager' => ['class' => 'yii\web\UrlManager'],
         'assetManager' => ['class' => 'yii\web\AssetManager'],
         'security' => ['class' => 'yii\base\Security'],
     ];
 }

1.1.4  題外話 —— 時序***

看Security類的代碼發(fā)現(xiàn),其有一個compareString()函數(shù),從功能上分析,它就是比較兩個字符串是否相等,但是為什么不直接使用“==”來比較呢?看這個函數(shù)的說明:“Performs string comparison using timing attack resistant approach”。

這里的“timing attack”(時序***)引起了我的興趣,于是了解了一下,原來是有些破解算法是根據(jù)目標系統(tǒng)的運行時間,來推測出加密算法的一些信息,從而降低破解難度,提高破解速度,真的是很有意思的一種破解思路。

參考文獻:

如何通俗地解釋時序***(timingattack)?

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務器買多久送多久。


文章題目:Yii2——密碼加密算法-創(chuàng)新互聯(lián)
鏈接URL:http://fisionsoft.com.cn/article/ipsgd.html