laravel的加密方法:1、利用Hash,語法“bcrypt(‘需要加密的文本’)”或“Hash::make(‘需要加密的文本’)”;2、使用Laravel的加密器,語法“encrypt(‘需要加密的文本’)”。
本教程操作環(huán)境:windows7系統(tǒng)、Laravel6版,DELL G3電腦。
laravel兩種加密方式
哈希
Laravel 的 Hash 里面為存儲用戶密碼提供了安全的 Bcrypt 和 Argon2 哈希算法。
注:Bcrypt 是散列密碼的絕佳選擇,因為其「工作因子」是可調(diào)整的,這意味著隨著硬件功能的提升,生成哈希所花費的時間也會增加。
配置
應用默認的哈希驅(qū)動配置在配置文件 config/hashing.php 中,目前支持兩個驅(qū)動:Bcrypt 和 Argon2。
注:Argon2i 驅(qū)動要求 PHP 7.2.0 或更高版本,Argon2id 驅(qū)動要求 PHP 7.3.0 或更高版本。
第一種
bcrypt('admin888')
第二種
use?IlluminateSupportFacadesHash; $pwd?=?Hash::make('admin888');????//加密存儲
驗證方法
if?(Hash::check('qwe123456',?$pwd))?{ ????//?密碼匹配... } public?function?login() { ????$credentials?=?request(['email',?'password']); ????if?(!?$token?=?auth('api')->attempt($credentials))?{ ????????return?response()->json(['error'?=>?'Unauthorized'],?401); ????} ????return?$this->respondWithToken($token); }
加密
Laravel 的加密器使用 OpenSSL 來提供 AES-256 和 AES-128 加密。強烈建議使用 Laravel 自帶的加密設(shè)置,不要嘗試推出自己“土生土長”的加密算法。所有 Laravel 加密過的值都使用消息授權(quán)碼(MAC)進行簽名以便底層值一經(jīng)加密就不能修改。
配置
在使用 Laravel 的加密器之前,必須在配置文件 config/app.php 中設(shè)置 key 選項為 32 位隨機字符串。可以使用 php artisan key:generate 命令來生成這個key,該 Artisan 命令會使用 PHP 的安全隨機字節(jié)生成器來構(gòu)建 key 的值。如果這個值沒有被設(shè)置,所有 Laravel 加密過的值都是不安全的。
加密
你可以使用輔助函數(shù) encrypt 對數(shù)據(jù)進行加密,所有加密值都使用 OpenSSL 和 AES-256-CBC 密碼(cipher)進行加密。此外,所有加密值都通過一個消息認證碼(MAC)來進行簽名以防止對加密字符串的任何修改。
encrypt('密碼')
不進行序列化的加密
加密值在加密期間都會經(jīng)過序列化函數(shù) serialize 進行處理,從而允許對對象和數(shù)組的加密。因此,非 PHP 客戶端接收的加密數(shù)據(jù)需要進行 unserialize 反序列化。
如果你想要在加密和解密數(shù)據(jù)時不進行序列化操作,可以使用 Crypt 門面提供的 encryptString 和 decryptString 方法:
use?IlluminateSupportFacadesCrypt; $encrypted?=?Crypt::encryptString('Hello?world.'); $decrypted?=?Crypt::decryptString($encrypted);
解密
你可以使用輔助函數(shù) decrypt 對加密數(shù)據(jù)進行解密。如果該值不能被解密,例如 MAC 無效,將會拋出一個IlluminateContractsEncryptionDecryptException異常:
use?IlluminateContractsEncryptionDecryptException; try?{ ????$decrypted?=?decrypt($encryptedValue); }?catch?(DecryptException?$e)?{ ????// }
相關(guān)推薦:最新的五個Laravel視頻教程