探索laravel里的encrypt和decrypt实现

Laravel 的加密机制使用 OpenSSL 提供 AES-256 和 AES-128 的加密1. 使用方法首先是生成秘钥。要需要在.env目录里提供APP_KEY,这个如果没有的话,可以通过命令php artisan key:generate生成,也可以自己设置。生成后例子应该是这样的 APP_KEY=base64:5BM1BXGOBrGeeqJMAWJZSzyzh5yPcCGO
摘要由CSDN通过智能技术生成

Laravel 的加密机制使用 OpenSSL 提供 AES-256 和 AES-128 的加密

1. 使用方法

  1. 首先是生成秘钥。要需要在.env目录里提供APP_KEY,这个如果没有的话,可以通过命令php artisan key:generate生成,也可以自己设置。生成后例子应该是这样的
    APP_KEY=base64:5BM1BXGOBrGeeqJMAWJZSzyzh5yPcCGOcOGPtUij65g=
  1. 在文件配置加密key和加密算法,在config/app.php的目录里有配置
$    'key' => env('APP_KEY'),

     'cipher' => 'AES-256-CBC',
  1. 使用方法,在laravel里已经有使用方法了,这里就不在过多的说了。主要使用的两个方法,一个是encrypt的加密,一个是decrypt的解密

2. 查找加密解密的文件

实现方法的位置是在vendor/illuminate/encryption/的目录下发现两个文件,一个是EncryptionServiceProvider另外一个是Encrypter

3. 分析EncryptionServiceProvider文件

    public function register()
    {
   
        $this->app->singleton('encrypter', function ($app) {
   
            $config = $app->make('config')->get('app'); //从config/app.php里拿到配置文件

            if (Str::startsWith($key = $config['key'], 'base64:')) { //分析配置文件里的key里面有没有带'base64'
                $key = base64_decode(substr($key, 7));   //如果有的话,把key前面的base64:给取消,并且解析出原来的字符串
            }

            return new Encrypter($key, $config['cipher']);  //实例化Encrypte类,注入到框架里
        });
    }

这个文件没太多东西,但是通过这个我们可以看出,其实在配置文件的,我们能直接写key,并且前面不带base64也是可以解析。相当于省几步操作
另外,在实例化类的时候,需要传入key以及加密方式

4. 分析Encrypter文件

1. 分析__construct,在实例化之前执行

    public 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值