Penyulitan dan penyahsulitan


Anda boleh menggunakan fungsi pembantu penyulitan untuk menyulitkan nilai. Semua nilai yang disulitkan disulitkan menggunakan AES-256-CBC OpenSSL. Selain itu, semua nilai yang disulitkan ditandatangani menggunakan Kod Pengesahan Mesej (MAC) untuk mengesan jika rentetan yang disulitkan telah diganggu:
<?php
   namespace App\Http\Controllers;
   use App\User;use Illuminate\Http\Request;
   use App\Http\Controllers\Controller;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();  
        }
     }

Tiada penyulitan bersiri

Semasa proses penyulitan, nilai yang disulitkan siri diserikan dan diluluskan, membenarkan objek dan tatasusunan yang disulitkan. Oleh itu, pelanggan bukan PHP yang menerima nilai yang disulitkan perlu menyahsiri menyahsiri data. Jika anda ingin menyulitkan dan menyahsulit nilai tanpa bersiri, anda boleh menggunakan kaedah Crypt Facade encryptString dan decryptString: serialize 序列化后传递,允许加密对象和数组。因此,接收加密值的非 PHP 客户端需要对数据进行 unserialize 反序列化。如果想要在不序列化的情况下加密解密值,你可以使用 Crypt Facade 的 encryptStringdecryptString 方法:

use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);

解密一个值

你可以使用辅助函数 decrypt 来进行解密。如果该值不能被正确解密,例如 MAC 无效时,会抛出异常 IlluminateContractsEncryptionDecryptException

use Illuminate\Contracts\Encryption\DecryptException;try { 
   $decrypted = decrypt($encryptedValue);
  } 
catch (DecryptException $e) {
    //
}

Nyahsulit nilaiAnda boleh menggunakan fungsi pembantu nyahsulit untuk menyahsulit. Jika nilai tidak boleh dinyahsulit dengan betul, contohnya apabila MAC tidak sah, pengecualian IlluminateContractsEncryptionDecryptException akan dilemparkan:
rrreee
Artikel ini pertama kali diterbitkan di tapak web 🎜LearnKu.com🎜. 🎜🎜