在Yii中又很多的數(shù)據(jù)我們不能夠以明文進行存儲和展示,例如密碼和一些比較重要的文件信息,這時候我們都需要我們對這些信息進行加密
一:對密碼進行加密和驗證客戶端傳輸?shù)拿艽a是否正確
1:對密碼進行加密
$hash = Yii::$app->getSecurity()->generatePasswordHash($password);
2:對客戶端傳遞的密碼進行驗證,判斷是否正確
//$password:客戶端傳遞的明文密碼,$hash:對密碼進行加密后的哈希值
if (Yii::$app->getSecurity()->validatePassword($password, $hash)) {
// 驗證成功(密碼正確)
} else {
// 驗證失敗(密碼錯誤)
}
二:生成一個偽隨機數(shù)據(jù)
在我們進行密碼重置的時候,我們經(jīng)常會發(fā)送一份郵件到用戶郵箱中,給他一個重置的密碼,這時候我們就可以使用Yii的偽隨機數(shù)據(jù)方法給用戶生成一個偽隨機數(shù)據(jù)作為密碼
//默認生成32為隨機字符,可以指定位數(shù)生成指定位數(shù)的偽隨機數(shù)
$key = Yii::$app->getSecurity()->generateRandomString();
三:Yii常見的數(shù)據(jù)加密和解密
Yii常見的加密方法有:encryptByPassword()和encryptByKey()
Yii常見的解密方法有:decryptByPassword()和decryptByKey()
1:encryptByPassword()和decryptByPassword()
加密:
//$data:需要加密的信息,$secretKey:加密時使用的密鑰(key)
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
解密:
//$encryptedData:需要解密的信息,$secretKey:加密時使用的密鑰(key)
$data = Yii::$app->getSecurity()->decryptByPassword($encryptedData, $secretKey);
1:encryptByKey()和decryptByKey()
加密:
//$data:需要加密的信息,$secretKey:加密時使用的密鑰(key)
$encryptedData = Yii::$app->getSecurity()->encryptByKey($data, $secretKey);
解密:
//$encryptedData:需要解密的信息,$secretKey:加密時使用的密鑰(key)
$data = Yii::$app->getSecurity()->decryptByKey($encryptedData, $secretKey);
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。