openssl php api,PHP7使用openssl解密易班API中的用户数据

PHP7使用openssl解密易班API中的用户数据

一、mcrypt扩展解密

自从PHP版本更新到了7.1以上以后,mcrypt扩展被废弃,使用mcrypt扩展会出现如下图的报错。只能使用openssl来代替。

0f80a1a08975d3b957b50e4f8fdf5e39.png

然而易班轻应用提供的还是旧版本的mcrypt扩展,这将导致php版本升级到7.1以上的版本会提示没有这个函数,以下是易班文档中心提供的解密代码,使用的加密方式为AES-128-CBC。<?php

$postObject = addslashes($_GET["verify_request"]);//获取verify_request参数值

$postStr = pack("H*", $postObject);

$appID = "";//应用appID

$appSecret = "";//应用appSecret

$postInfo = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $appSecret, $postStr, MCRYPT_MODE_CBC, $appID);

$postInfo = rtrim($postInfo);

?>

二、改为openssl解密

测试过程中将以上代码使用openssl该写后使用AES-128-CBC解密失败,后将其改为AES-256-CBC后,option选择OPENSSL_RAW_DATA|OPENSSL_NO_PADDING或者1|3均可解密成功(这里测试必须使用2个选项否则解密失败)。<?php

$data = "5638b78a47bab5db7ec413d2b1dff605fe0782d51683a7cf20b5341c021eb11abb1f057260bf45c6a942a5410c4ee16c17828cc64c7f0cecce722af1ba50921a6b2a1b1b670f690809f20cca10abe17ea87c2d63fb7448f1fbd23173239c2f0017988b06e282436f12315d0524639e9332b9fde760a30e9eecb4a73f8f19890c56923727d02318a0738a9d1f85466d3c0e8d63e3a244fe90dbfa95d0854e2e46ed4bbb800accb6c99af1bc2c0ae5111f0defc78cd76088a0dfe17eec3befa18c91bb5fc4b5c3fe10e659e7e646b9a5ea31c5e1630debddc24c9fa79e60d1c3520781bcb77840692d0c399dc2a7309c545a6fc0786b5aba101377e92bf484efb6";

$postStr = pack("H*", $data);

//16位key密钥

$appID = '5a78142f61c73774';

//32位的iv向量

$appSecret ='d2eb797fd023d049a53a033c1d359971';

$pinfo = openssl_decrypt($postStr,"AES-256-CBC",$appSecret,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$appID);

print_r($pinfo);

?>

解密后的结果如下:{

"visit_time": 1566317331,

"visit_user": {

"userid": "12543770",

"username": "雨落凋殇",

"usernick": "雨落凋殇",

"usersex": "M"

},

"visit_oauth": {

"access_token": "ca2441e60276fab919c12150dd15d9fade201e48",

"token_expires": "1566922131"

}

}

三、总结

经过上面的mcrypt的解密方式AES-128-CBC转换为openssl后必须使用AES-256-CBC才能解密成功。博主也没弄清具体原因。本文如有问题欢迎评论指正!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事

如果您使用过Spring MVC&#xff0c;那么您应该知道什么是DispatcherServlet&#xff1f; 它实际上是Spring MVC的心脏&#xff0c;确切地说是MVC设计模式或控制器的C语言。 应该由Spring MVC处理的每个Web请求都通过DispatcherServlet处理。 通常&#xff0c;它是Front Contro…

运行时错误7内存溢出_分别从运行时和GC的角度看JAVA8内存管理

运行时区域1.程序计数器程序计数器&#xff08;Program Counter Register&#xff09;是一块较小的内存空间&#xff0c;它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机概念模型里&#xff08;概念模型&#xff0c;各种虚拟机可能会通过一些更高效的方式实现&#…

极域课堂管理系统软件如何取消控制_微缔电子组装业MES系统软件六大功能组成...

电子组装业MES系统软件六大功能组成MES系统软件是制造执行系统的英文简称&#xff0c;MES系统软件在整个企业信息集成系统中承上启下&#xff0c;是生产活动与管理活动信息沟通的桥梁&#xff0c;MES系统软件在产品从工单下发到生产成成品的整个过程中&#xff0c;扮演着促进生…

多个cuda 被单进程沾满_报名 | 提高GPU利用率,听英伟达专家分享这个CUDA工具

随着 NVIDIA GPU 计算性能的不断提升&#xff0c;如何提升 GPU 利用率是开发者普遍关心的问题之一。从 Kepler 架构开始&#xff0c;NVIDIA GPU 支持多个 CUDA kernels 函数的并发执行&#xff0c;称为 Hyper-Q 技术。Hyper-Q 技术支持多个 CUDA streams、多个 CPU threads 或者…

usb转ttl模块与matlab,USB接口转TTL小板的自检测试

现在电脑基本上都不会配置DB9串行数据端口了&#xff0c;这给一些喜欢折腾刷机和单片机加载程序的朋友带来了诸多的不便。还好&#xff0c;随着技术的发展&#xff0c;USB接口转TTL的产品越来越成熟&#xff0c;而这种产品主要以采用PL-2303HX芯片作为主控器的居多&#xff0c;…

matlab 误差椭圆,求3倍标准差误差椭圆分析的程序

根据《白话空间统计之九&#xff1a;方向分布(标准差椭圆)修正版》(有些地方没有理解清楚)&#xff0c;写了下面的程序。但是好像结果不对Zmvnrnd([0.5 1.5], [0.025 0.03 ; 0.03 0.16], 50);XZ(:,1); YZ(:,2);mean_Xnanmean(X); mean_Ynanmean(Y); %椭圆圆心%确定长短半轴…

java ee cdi_Java EE CDI处理程序方法示例

java ee cdi这是CDI Disposer方法的教程。 在CDI中&#xff0c;由于Producer方法生成的对象随后可以注入到应用程序中&#xff0c;因此使用Disposer方法&#xff0c;以便在其工作完成时将其删除。 Disposer方法始终与Producer方法匹配。 Disposer方法使用的一个示例是当应用程…

python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)

因为是示例为主&#xff0c;我们将方程组限制在二元一次方程组&#xff1a;x,y两个变量&#xff0c;两个方程。类似这样&#xff1a;每个方程有两个变量&#xff0c;x和y&#xff0c;形式为&#xff1a;axbycd由于这次有了两个方程&#xff0c;我们提取参数的代码就适合提炼为一…

快速提示:使用Chrome开发工具调试GWT应用程序

调试是软件开发的重要方面。 拥有正确的工具可以节省大量时间和头痛。 在GWT Super Dev模式之前&#xff0c;经典的Dev模式允许使用JVM调试。 开发人员可以在其IDE中设置断点&#xff0c;并使用调试模式来跟踪错误和错误。 现在&#xff0c;在超级开发模式下&#xff0c;情况有…

用matlab做纹理合成,关于图像纹理合成的Matlab例程

纹理是普遍存在的视觉现象&#xff0c;其可以描述地形、植物、矿石、纤维和皮肤等等物体的表面特征。纹理结构在图像中反映其图像像素取值的空间变化情况&#xff0c;这种变化具有某中统计规律&#xff0c;在纹理区域内的各部分具有大致相同的结构。纹理合成是利用计算机产生纹…

matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...

这篇博客是接着上一篇来哒&#xff0c;https://blog.csdn.net/luolan9611/article/details/94285158本篇博客及上篇博客搜集的资料、实验代码、实验报告、PPT均已上传至百度网盘&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1AmT4TtBAxj1FKf4KUFcsBw 提取码&#x…

qt中实现左右分割线_Qt项目中,实现屏幕截图并生成gif的详细示例(值得细读)...

总第50篇平时我们在工作和学习的过程中&#xff0c;有时需要将桌面的某些动作截图生成gif动图&#xff0c;以更生动地呈现出来。目前有很多这样的软件&#xff0c;并且方便易使用&#xff0c;比如我经常使用的GifCam&#xff0c;软件小巧&#xff0c;生成的图片文件也比较小&am…

构建Spring Boot RESTful服务+ Spring Boot执行器

总览 什么是REST&#xff1f; REST&#xff08;代表状态转移&#xff09;是Web构建的体系结构样式&#xff0c;已成为用于Web应用程序的标准软件设计模式 。 代表性国家转移一词最早由REST的发起人&#xff0c;HTTP规范的主要作者之一Roy Fielding在其博士论文中使用 。 REST上…

tf调不到keras怎么 回事_格力变频空调快速维修方法及技巧 空调压缩机不到一分钟就停,怎么回事?...

格力变频空调快速维修方法及技巧一、 室内部分&#xff1a; 1、F1开路&#xff1a;制冷时不启动或启动一下就停机&#xff1b;制热正常&#xff0c;且一直高频运转。 2、F2开路&#xff1a;工作6—10分钟就停机&#xff0c;显示E2停止外机。 3、F2短路&#xff1…

php自动释放mysql连接,php怎么关闭mysql连接

php怎么关闭mysql连接2021-03-17 07:45:43php中可使用mysqli_close()函数来关闭mysql连接&#xff0c;语法格式“mysqli_close(connection);”。mysqli_close()函数可关闭先前打开的数据库连接&#xff0c;如果成功返回TRUE&#xff0c;反之则返回FALSE。本教程操作环境&#x…

Java 8 –按值对HashMap进行升序和降序排序

在上一篇文章中&#xff0c;我向您展示了如何通过键对Java 8中的Map进行排序 &#xff0c;今天&#xff0c;我将教您如何使用Java 8功能&#xff08;例如&#xff0c;lambda表达式&#xff0c;方法引用&#xff0c;流和新方法&#xff09; 按值对Map进行排序。添加到java.util.…

scrcpy投屏_scrcpy 使用教程:将安卓设备投屏到 PC 端

阿拉平平读完需要6分钟速读仅需 2 分钟scrcpy 是一款开源的安卓设备投屏工具&#xff0c;通过 USB 或 Wi-Fi 与设备连接后就可以在 PC 端操作安卓设备&#xff0c;无需 root 权限且支持多平台运行。本文将演示如何使用 scrcpy 进行投屏操作。1. 下载安装到 Releases 下载最新的…

打砖块小游戏php程序,利用原生js实现html5打砖块小游戏(代码示例)

本篇文章给大家通过代码示例介绍一下利用原生js实现html5打砖块小游戏的方法。有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对大家有所帮助。前言PS&#xff1a;本次项目中使用了大量 es6 语法&#xff0c;故对于 es6 语法不太熟悉的小伙伴最好能先了…

si9000阻抗匹配计算_如何在设计之初计算出两层PCB板差分线的阻抗,线宽,间距...

最近在设计一款两层板PCB。板上一些高速信号线&#xff0c;分别是MIMP接口的差分线和USB2.0的差分线。既然是高速线&#xff0c;那么就需要设计成阻抗匹配走线。MIMP差分线需要做100ohm匹配&#xff0c;USB线需要做90ohm匹配。差分线阻抗的计算主要跟线宽&#xff0c;间距&…

jax-ws cxf_Apache CXF – JAX-WS –简单教程

jax-ws cxf许多Java开发人员都认为Web Service实现的任务艰巨-好吧&#xff0c;没有人能真正责怪他们&#xff0c;尤其是在企业应用程序开发的多年中&#xff0c;这给开发和设计带来了很多复杂性。 对于某些人来说&#xff0c;了解它是构建完整的企业应用程序的下一步-Web服务-…