In this tutorial we ‘re going to encrypt and decrypt class using CRYPT class in laravel.
First to create models
Php artisan make:model Transaction -mc
Go to migration file and put below code
$table->string('card_name');
$table->string('card_no');
$table->string('exp_month');
$table->string('cvv');
Next to migrate the table
php artisan migrate
Next go to route and paste below code
Route::get('transactions','TransactionController@index')->name('index');
Next go to controller and paste below function.
public function index(){
return view('transactions');
}
Next to create view file
transactions.blade.php
Put below code in blade page
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<form action="{{ route('transaction.store')}}" method="POST">
@csrf
<div class="form-group">
<input type="text" class="form-control" name="card_name" placeholder="enter card name">
</div>
<div class="form-group">
<input type="text" class="form-control" name="card_no" placeholder="enter card no">
</div>
<div class="form-group">
<input type="text" class="form-control" name="exp_month" placeholder="enter exp months">
</div>
<div class="form-group">
<input type="text" class="form-control" name="cvv" placeholder="enter cvv no">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
@endsection
Next go to controller and paste below store function
public function store(Request $request)
{
$transaction = new Transaction();
$transaction->card_name = $request->card_name;
$transaction->card_no = $request->card_no;
$transaction->exp_month = $request->exp_month;
$transaction->cvv = $request->cvv;
$transaction->save();
return redirect()->route('index');
}
Next to create store route
Route::post('transactions/store','TransactionController@store')->name('transaction.store');
Next to add encrypt facades
use Illuminate\Support\Facades\Crypt;
Got to transaction model and paste below code
use Illuminate\Support\Facades\Crypt;
Go to transaction model and paste below code
<?php
namespace App;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Encryption\DecryptException;
class Transaction extends Model
{
// for using data encrypt
public function setCardNoAttribute($value)
{
$this->attributes['card_no'] = Crypt::encryptString($value);
}
public function setExpMonthAttribute($value)
{
$this->attributes['exp_month'] = Crypt::encryptString($value);
}
public function setCvvAttribute($value)
{
$this->attributes['cvv'] = Crypt::encryptString($value);
}
public function setCardNameAttribute($value)
{
$this->attributes['card_name'] = Crypt::encryptString($value);
}
// for decrypt data using
public function getCardNoAttribute($value)
{
try {
return Crypt::decryptString($value);
}catch(\Exception $e){
return $value;
}
}
public function getExpMonthAttribute($value)
{
try {
return Crypt::decryptString($value);
}catch(\Exception $e){
return $value;
}
}
public function getCvvAttribute($value)
{
try {
return Crypt::decryptString($value);
}catch(\Exception $e){
return $value;
}
}
public function getCardNameAttribute($value)
{
try {
return Crypt::decryptString($value);
}catch(\Exception $e){
return $value;
}
}
}
Now insert data and check that is encrypted or not
Now encrypted data stored successfully.