首頁  >  文章  >  php框架  >  laravel的加密方法是什麼

laravel的加密方法是什麼

青灯夜游
青灯夜游原創
2021-12-21 11:23:054766瀏覽

laravel的加密方法:1、利用Hash,語法「bcrypt('需要加密的文字')」或「Hash::make('需要加密的文字')」;2、使用Laravel的加密器,語法“encrypt('需要加密的文字')”。

laravel的加密方法是什麼

本教學操作環境:windows7系統、Laravel6版,DELL G3電腦。

laravel兩種加密方式

雜湊

#Laravel 的Hash 裡面為儲存使用者密碼提供了安全的Bcrypt和Argon2 哈希演算法。

附註:Bcrypt 是雜湊密碼的絕佳選擇,因為其「工作因子」是可調整的,這意味著隨著硬體功能的提升,產生雜湊所花費的時間也會增加。

設定

應用預設的雜湊驅動設定在設定檔 config/hashing.php 中,目前支援兩個驅動:Bcrypt 和 Argon2。

附註:Argon2i 驅動程式要求 PHP 7.2.0 或更高版本,Argon2id 驅動程式要求 PHP 7.3.0 或更高版本。

第一種

bcrypt('admin888')

第二種

use Illuminate\Support\Facades\Hash;
$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 自帶的加密設置,不要嘗試推出自己「土生土長」的加密演算法。所有 Laravel 加密過的值都使用訊息授權碼(MAC)進行簽署以便底層值一經加密就不能修改。

設定

在使用 Laravel 的加密器之前,必須在設定檔 config/app.php 中設定 key 選項為 32 位元隨機字串。可以使用 php artisan key:generate 指令來產生這個key,該 Artisan 指令會使用 PHP 的安全隨機位元組產生器來建立 key 的值。如果這個值沒有被設置,所有 Laravel 加密過的值都是不安全的。

加密

你可以使用輔助函數 encrypt 對資料進行加密,所有加密值都使用 OpenSSL 和 AES-256-CBC 密碼(cipher)進行加密。此外,所有加密值都透過一個訊息認證碼(MAC)來進行簽章以防止加密字串的任何修改。

encrypt('密码')

不進行序列化的加密

加密值在加密期間都會經過序列化函數 serialize 進行處理,從而允許對物件和陣列的加密。因此,非 PHP 用戶端接收的加密資料需要進行 unserialize 反序列化。

如果你想要在加密和解密資料時不進行序列化操作,可以使用Crypt 門面提供的encryptString 和decryptString 方法:

use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);

解密

你可以使用輔助函數decrypt 來解密加密資料。如果該值無法被解密,例如MAC 無效,將會拋出一個Illuminate\Contracts\Encryption\DecryptException異常:

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}

相關推薦:最新的五個Laravel影片教學

以上是laravel的加密方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn