• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel的加密解密与哈希实例讲解

    一、加密解密

    当你的应用程序中需要用到加密和解密的地方时可以使用Laravel自带的加密解密工具。

    Laravel 的加密机制使用的是 OpenSSL 所提供的 AES-256 和 AES-128 加密。强烈建议你使用 Laravel 内建的加密工具,而不是用其它的加密算法。所有 Laravel 加密之后的结果都会使用消息认证码 (MAC) 签名,使其底层值不能在加密后再次修改。

    相应的配置文件 config/app.php

    首先生成 APP_KEY

    php artisan key:generate

    在.env文件里面

    APP_KEY=base64:NHs1dJd5AkOZJvnPJEHMVmg89hi7Lr8Uc5zkOXEgMgk=

    最终调用的地方在:

    Illuminate\Encryption\Encrypter.php
    
    public function decrypt($payload, $unserialize = true)
    public function decrypt($payload, $unserialize = true)

    可以看出,默认是支持序列化和反序列化的,也就是说支持对数组和对象进行加密解密。

    再来看我们可以调用的方法:
    助手函数:helpers.php

    function encrypt($value, $serialize = true)
    {
      return app('encrypter')->encrypt($value, $serialize);
    }
    function decrypt($value, $unserialize = true)
    {
      return app('encrypter')->decrypt($value, $unserialize);
    }

    门面操作:Illuminate\Support\Facades\Crypt

    public function encryptString($value)
    {
      return $this->encrypt($value, false);
    }
    public function decryptString($payload)
    {
      return $this->decrypt($payload, false);
    }

    可以看出门面是只能对字符串进行加密解密的,而助手函数功能更强大一些。

    示例:

    $pass = "123456";
    $this->info($pass);
    
    $this->info("");
    
    $enc = Crypt::encryptString($pass);
    $this->info($enc);
    
    $dec = Crypt::decryptString($enc);
    $this->info($dec);
    
    $this->info("");
    
    $enc = encrypt($pass);
    $this->info($enc);
    $dec = decrypt($enc);
    $this->info($dec);

    二、哈希加密

    哈希加密应用在不需要解密的地方,比如存储密码,校验密码。
    Bcrypt 是哈希密码的理想选择,因为它的 「加密系数」 可以任意调整,这意味着生成哈希所需的时间可以随着硬件功率的增加而增加。
    配置:config/hashing.php
    使用门面:Illuminate\Support\Facades\Hash
    加密:

    $pass = "123456";
    $enc = Hash::make($pass);
    // $2y$10$4A6vnjdJwIo.FjnvcPN4OepeFgiJ4K1VDCXRSGUbjue3k23AID3Pq
    // $2y$10$JhFPyb7nEN6A9.P5ZHXYpea07E727LNbxhMj8UrsuoE0M1PKUYY9i

    同一个字符串每次加密的结果不一样!!

    校验:

    if (Hash::check($pass, $enc)) {
      $this->info("ok");
    }else{
      $this->info('err');
    }
    

    即使每次加密的结果不一样,但是不影响校验。

    到此这篇关于Laravel的加密解密与哈希实例讲解的文章就介绍到这了,更多相关Laravel的加密解密与哈希内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 浅谈Laravel中使用Slack进行异常通知
    • 如何用Laravel包含你自己的帮助函数
    • 详解Laravel框架的依赖注入功能
    • php+laravel 扫码二维码签到功能
    • laravel的数据表填充器使用详解
    • laravel ajax curd 搜索登录判断功能的实现
    • Laravel中Kafka的使用详解
    • laravel使用redis队列实例讲解
    • Laravel中10个有用的用法小结
    • 分析五个Laravel Dusk的使用技巧
    上一篇:Laravel中10个有用的用法小结
    下一篇:laravel使用redis队列实例讲解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Laravel的加密解密与哈希实例讲解 Laravel,的,加密解密,与,哈希,