前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP7使用openssl解密易班API中的用户数据

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

作者头像
雨落凋殇
发布2019-12-25 17:22:26
1.1K0
发布2019-12-25 17:22:26
举报
文章被收录于专栏:雨落凋殇雨落凋殇

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

一、mcrypt扩展解密

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

高版本PHP
高版本PHP

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

代码语言:javascript
复制
<?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个选项否则解密失败)。

代码语言:javascript
复制
<?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);
?>

解密后的结果如下:

代码语言:javascript
复制
{
  "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才能解密成功。博主也没弄清具体原因。本文如有问题欢迎评论指正!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP7使用openssl解密易班API中的用户数据
    • 一、mcrypt扩展解密
      • 二、改为openssl解密
        • 三、总结
        相关产品与服务
        SSL 证书
        腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档