laravel Crypt::encrypt() 的的注意事项。

10 篇文章 0 订阅

 使用 Crypt::encrypt() 对数据进行加密,[注意要引入 use Illuminate\Support\Facades\Crypt;; ]

  简单的做个测试:

    先分配一个路由:

1 Route::get('test','LoginController@crypt');

    例子:

复制代码
1     public function crypt(){
2         $pswd = '123456';
3         $pswd_lock = Crypt::encrypt($pswd);//加密$pswd
4         echo $pswd_lock.'<br/>';
5         $pswd_open = Crypt::decrypt($pswd_lock);
6         echo $pswd_open;
7     }
复制代码

    输出:   eyJpdiI6InlaYVJjVjVDME1YaVdRdTBIczd ...  一堆加密后的字符串
        123456  

  这就是简单的用法例子,然后下面讲的就是之前做的后台一个登陆后的密码解密过程出现的 The Mac Is Invalid 错误 。

  一开始看到这个错误的时候一脸蒙蔽。以为是代码哪有问题。然后一直断点调试发现到用户登陆时数据库里面之前加密的用户密码一堆字符串还能获取到的。但是使用Crypt::decrypt()去解密的时候就提示 The Mac Is Invalid 然后很郁闷重写了个上面的方法测试了一下发现没有问题啊。然后我在试着解密数据库里面的 那堆字符串就提示报错。然后百度了下 在看看 laravel手册 看到 :

  在使用Laravel的加密器之前,应该在配置文件config/app.php中设置key选项为32位随机字符串。如果这个值没有被设置,所有Laravel加密过的值都是不安全的所有加密值都使用OpenSSL和AES-256-CBC密码进行加密。此外,所有加密值都通过一个消息认证码(MAC)来检测对加密字符串的任何修改。

  然后就想了想前几天写之前那个博文的时候做个下测试更换APP_KEY的artisan命令。之后就再次问了下大牛们、"果然就是这APP_KEY捣的鬼 ..."。 于是自己把从新加密后的 那堆字符串给放到数据库里面 再次登陆然后就解决了、 那么问题来了。假设项目APP_KEY被盗取,再次更换APP_KEY那数据库里面数据用户信息岂不是要重新写入?没错就是要重新弄。数据库里面的数据都作废掉了。但是APP_KEY基本上不会泄露。所以不要轻易更换APP_KEY。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值