Laravel框架加密方式有几种,加密原理如何理解
Admin 2022-06-15 群英技术资讯 1746 次浏览
laravel的加密方法:1、利用Hash,语法“bcrypt('需要加密的文本')”或“Hash::make('需要加密的文本')”;2、使用Laravel的加密器,语法“encrypt('需要加密的文本')”。
本教程操作环境:windows7系统、Laravel6版,DELL G3电脑。
哈希
Laravel 的 Hash 里面为存储用户密码提供了安全的 Bcrypt 和 Argon2 哈希算法。
注:Bcrypt 是散列密码的绝佳选择,因为其「工作因子」是可调整的,这意味着随着硬件功能的提升,生成哈希所花费的时间也会增加。
配置
应用默认的哈希驱动配置在配置文件 config/hashing.php 中,目前支持两个驱动:Bcrypt 和 Argon2。
注:Argon2i 驱动要求 PHP 7.2.0 或更高版本,Argon2id 驱动要求 PHP 7.3.0 或更高版本。
第一种
bcrypt('admin888')
第二种
use Illuminate\Support\Facades\Hash; $pwd = Hash::make('admin888'); //加密存储
验证方法
if (Hash::check('qwe123456', $pwd)) { // 密码匹配... } public function login() { $credentials = request(['email', 'password']); if (! $token = auth('api')->attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } return $this->respondWithToken($token); }
加密
Laravel 的加密器使用 OpenSSL 来提供 AES-256 和 AES-128 加密。强烈建议使用 Laravel 自带的加密设置,不要尝试推出自己“土生土长”的加密算法。所有 Laravel 加密过的值都使用消息授权码(MAC)进行签名以便底层值一经加密就不能修改。
配置
在使用 Laravel 的加密器之前,必须在配置文件 config/app.php 中设置 key 选项为 32 位随机字符串。可以使用 php artisan key:generate 命令来生成这个key,该 Artisan 命令会使用 PHP 的安全随机字节生成器来构建 key 的值。如果这个值没有被设置,所有 Laravel 加密过的值都是不安全的。
加密
你可以使用辅助函数 encrypt 对数据进行加密,所有加密值都使用 OpenSSL 和 AES-256-CBC 密码(cipher)进行加密。此外,所有加密值都通过一个消息认证码(MAC)来进行签名以防止对加密字符串的任何修改。
encrypt('密码')
不进行序列化的加密
加密值在加密期间都会经过序列化函数 serialize 进行处理,从而允许对对象和数组的加密。因此,非 PHP 客户端接收的加密数据需要进行 unserialize 反序列化。
如果你想要在加密和解密数据时不进行序列化操作,可以使用 Crypt 门面提供的 encryptString 和 decryptString 方法:
use Illuminate\Support\Facades\Crypt; $encrypted = Crypt::encryptString('Hello world.'); $decrypted = Crypt::decryptString($encrypted);
解密
你可以使用辅助函数 decrypt 对加密数据进行解密。如果该值不能被解密,例如 MAC 无效,将会抛出一个Illuminate\Contracts\Encryption\DecryptException异常:
use Illuminate\Contracts\Encryption\DecryptException; try { $decrypted = decrypt($encryptedValue); } catch (DecryptException $e) { // }
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
会话机制(Session)在PHP中用于保存并发访问中的一些数据。这使可以帮助创建更为人性化的程序,增加站点的吸引力。一个访问者访问你的web网站将被分配一个唯一的id...
php7连不上mysql8的解决办法:1、检查mysql进程是否启动;2、添加端口信息;3、修改客户端端口和服务端一致即可。
本篇文章小编给大家分享一下python获取星期字符串代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
这篇文章主要介绍了PHP封装请求类,结合实例形式分析了基于Yii框架的curl封装请求处理的相关实现技巧,需要的朋友可以参考下
PHP中define定义常量的方法:1、PHP中的变量是指程序中使用的值可以改变的量,相反的是常量。2、常量值定义后,脚本的其他任何地方都不能改变。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008