laravel cookie加密解密原理
通过控制台的 cookie 信息我们会发现,每次请求之后,关键的 cookie,如PHPSESSID、XSRF-TOKEN 都会发生变化,并且都是很长的一串字符串。
其实这是一个 json 数组,其中包含了 iv,value,mac 三个字段:
这些字段都是在框架加密解密的时候使用的,加密方法是 openssl_encrypt:
对 openssl 不太了解的可以看下下面的例子:
$data = 'laravel';
$iv = random_bytes(16);
$key = 'this is key';$encrypt = openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv);var_dump($encrypt);
var_dump(openssl_decrypt($encrypt, 'AES-256-CBC', $key, 0, $iv));
laravel 中的话,key 就是 .env 配置文件里面的 APP_KEY,除了 key 还有两个变化的参数就是 加密、解密的数据以及 iv。
也就是说,如果我们需要加密 cookie 的话,我们至少得保存下 加密后的数据以及 iv。
这样看来,mac 字段似乎有点多余,但是我们可以使用该字段来验证数据的合法性:
如果验证不通过, laravel 也就不会对 data 进行解密操作。
虽然每次请求 cookie 都会发生变化,但是实际数据是没有变的,发生变化只是因为用来加密的 iv 变了(使用 random_bytes 方法生成)。
由于 iv 每次都变化,所以需要把 iv 也一同返回给浏览器,加上验证数据合法性的 mac,最后返回的就是下面的数组的 json编码后在 base64 编码的数据:
['iv' => random_bytes(16), // 16位随机字节串'value' => 'xxxx...', // 加密后的数据'mac' => 'xxx...' // 后续请求验证数据合法性的字符串
]
转载于:https://www.cnblogs.com/eleven24/p/8269988.html
laravel cookie加密解密原理相关推荐
- php实现cookie加密解密
1.加密解密类 1 class Mcrypt 2 { 3 /** 4 * 解密 5 * 6 * @param string $encryptedText 已加密字符串 7 * @param strin ...
- java加密解密代码_base64位加密解密原理及js代码实现
base64位加密解密原理及js代码实现 在网上找了很多关于Base64加密解密的原理以一个比较通俗易懂的方式理解整理了一下大致原理如下 先上base64对照表 #加密 #1:将明文对照以acsii码 ...
- 前端Cookie加密解密
前端实现对请求中的cookie加密解密,效果如下 加密解密工具有很多,这里以Base64为例,可参考如下 https://www.jb51.net/article/138397.htm 具体的对coo ...
- php cookie 加密解密,php实现cookie加密的方法
这篇文章主要介绍了php实现cookie加密的方法,涉及php操作cookie的加密.解密及设置等技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php实现cookie加密的方法.分享 ...
- php cookie 加密解密,php操作cookie的加密、解密的方法
这篇文章主要介绍了php实现cookie加密的方法,涉及php操作cookie的加密.解密及设置等技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了php实现cookie加密的方法.具体 ...
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
文章目录 一.加密类型 二.加密解密三要素 三.加密应用场景 四.散列函数 一.加密类型 数据加密操作 分为 对称加密 和 非对称加密 ; 对称加密 : 加密密钥 与 解密密钥 相同 ; 非对称加密 ...
- rot13加密解密原理
ROT13(回转13位,rotate by 13 places,有时中间加了个连字符称作ROT-13)是一种简易的替换式密码.它是一种在英文网络论坛用作隐藏八卦(spoiler).妙句.谜题解答以及某 ...
- 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
文章目录 一.对称加密原理 二.非密钥整数倍长度的数据加密处理 一.对称加密原理 给定一个 密钥 , 密钥的 长度不确定 , 可能是 323232 字节 , 也可能是 646464 字节 ; 将 被加 ...
- 图解SSL和加密解密-原理篇
1.SSL原理 Secure Sockets Layer(安全的套接字层)位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持.用于保障在Internet上数据传输之安全,利用数 ...
最新文章
- 如何在Linux中运用vim命令轻松编辑文件
- 成功解决ModuleNotFoundError: No module named 'keras_resnet'
- Golang 学习笔记资源
- 战龙四驱java_《战龙四驱》中都有哪些经典角色
- SAP和CRM相关的标准教材,学通了这些,就算是CRM专家了
- LeetCode 2207. 字符串中最多数目的子字符串(前缀和)
- Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】
- Eclipse 常用快捷键收集
- 百度地图2021十一大数据:全国高速拥堵里程超7000公里
- outlook搜索栏跑到上面去了_长春企业网站搜索优化如何做
- php常量的声明和使用
- pycharm-.db文件打不开问题
- c++ 设计模式推荐书籍
- java 参数命名规则_Java命名规范
- 对坐标的曲线积分求做功_对坐标的曲线积分对弧长的曲线积分 二重积分
- 快快436 高智商罪犯一
- elasticsearch search timeout机制
- LINUX学习—AWK(LINUX三剑客)
- 2018年外链发布平台
- python函数相关练习题
热门文章
- Excel ,三步 快速实现应用一个公式到一列或一行中
- [CE5入门系列1]如何正确安装和初步使用
- 听说有人解决了三体问题,我去做了一点微小的调查
- 科创板首发过会,格灵深瞳“三变”交出IPO答卷
- GitHub换帅!开源大神辞任CEO,竞品GitLab刚完成IPO
- GitHub的AI程序员“抄袭”算法大神代码,连原版注释都抄上了
- 不孕不育怎么办?AI帮你提高成功率
- 吴恩达机器学习入门2018高清视频公开,还有习题解答和课程拓展,网友:找不到理由不学!...
- 深度学习已成强弩之末?Bengio等大牛NeurlPS2019上支招
- Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天