詳解PHP laravel中的加密與解密函數(shù)
Laravel為我們提供了完整的加密方法及加密模式。
我之前一般在加密的時(shí)候使用的是我自己寫的加密函數(shù),但是這個玩意,有的位置還是不太使用,當(dāng)然,破解的話,基本上也是不可能的。具體請移步《php加密函數(shù)與解密函數(shù)》
這里具體看下laravel為我們提供的加密及解密方法。
一:簡介
Laravel 的加密器使用 OpenSSL 來提供 AES-256 和 AES-128 加密。強(qiáng)烈建議使用 Laravel 自帶的加密設(shè)置,不要嘗試推出自己“土生土長”的加密算法。所有 Laravel 加密過的值都使用消息授權(quán)碼(MAC)進(jìn)行簽名以便底層值一經(jīng)加密就不能修改。
二:配置
在使用 Laravel 的加密器之前,必須在配置文件 config/app.php 中設(shè)置 key 選項(xiàng)為 32 位隨機(jī)字符串。可以使用 php artisan key:generate 命令來生成這個key,該 Artisan 命令會使用 PHP 的安全隨機(jī)字節(jié)生成器來構(gòu)建 key 的值。如果這個值沒有被設(shè)置,所有 Laravel 加密過的值都是不安全的。
三:使用加密/解密
1:加密
你可以使用輔助函數(shù) encrypt 對數(shù)據(jù)進(jìn)行加密,所有加密值都使用 OpenSSL 和 AES-256-CBC 密碼(cipher)進(jìn)行加密。此外,所有加密值都通過一個消息認(rèn)證碼(MAC)來進(jìn)行簽名以防止對加密字符串的任何修改。
<?php
namespace AppHttpControllers;
use AppUser;
use IlluminateHttpRequest;
use AppHttpControllersController;
class UserController extends Controller
{
/**
* 存儲用戶安全信息.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id)
{
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}2:不使用序列化進(jìn)行加密
加密值在加密期間都會經(jīng)過序列化函數(shù) serialize 進(jìn)行處理,從而允許對對象和數(shù)組的加密。因此,非 PHP 客戶端接收的加密數(shù)據(jù)需要進(jìn)行 unserialize 反序列化。如果你想要在加密和解密數(shù)據(jù)時(shí)不進(jìn)行序列化操作,可以使用 Crypt 門面提供的 encryptString 和 decryptString 方法:
use IlluminateSupportFacadesCrypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);
3:解密
你可以使用輔助函數(shù) decrypt 對加密數(shù)據(jù)進(jìn)行解密。如果該值不能被解密,例如 MAC 無效,將會拋出一個IlluminateContractsEncryptionDecryptException異常:
use IlluminateContractsEncryptionDecryptException;
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}以上大概就是laravel為我們提供的加密/解密函數(shù)
到此這篇關(guān)于詳解PHP laravel中的加密與解密函數(shù)的文章就介紹到這了,更多相關(guān)PHP laravel加密 解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家
相關(guān)文章
php讀取mysql亂碼,用set names XXX解決的原理分享
解決亂碼的方法,我們經(jīng)常使用“set names utf8”,那么為什么加上這句代碼就可以解決了呢?下面跟著我一起來深入set names utf8的內(nèi)部執(zhí)行原理2011-12-12
WordPress中用于創(chuàng)建以及獲取側(cè)邊欄的PHP函數(shù)講解
這篇文章主要介紹了WordPress中用于創(chuàng)建以及獲取側(cè)邊欄的PHP函數(shù)講解,分別為register_sidebar()函數(shù)和get_sidebar()的使用,需要的朋友可以參考下2015-12-12

