PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法详解美洲
分类:计算机教程

前言

概要:

mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。

php7.1发布后新特性吸引了不少PHPer,大家都在讨论新特性带来的好处与便利。但是从php7.0 升级到 php7.1 废弃(过时)了一个在过去普遍应用的扩展(mcrypt扩展)。官方提供了相应的解决提示,却没有提供更详细的解决办法。于是坑来了:

PHP手册在7.1迁移页面给出了替代方案,就是用OpenSSL取代MCrypt.

今天在使用微信开放平台对接一个内容管理系统的时候,在绑定公众号的时候一直失败

示例代码

原因:

/**
 * [AesSecurity aes加密,支持PHP7.1]
 */
class AesSecurity
{
 /**
  * [encrypt aes加密]
  * @param [type]     $input [要加密的数据]
  * @param [type]     $key [加密key]
  * @return [type]       [加密后的数据]
  */
 public static function encrypt($input, $key)
 {
  $data = openssl_encrypt($input, 'AES-128-ECB', $key, OPENSSL_RAW_DATA);
  $data = base64_encode($data);
  return $data;
 }
 /**
  * [decrypt aes解密]
  * @param [type]     $sStr [要解密的数据]
  * @param [type]     $sKey [加密key]
  * @return [type]       [解密后的数据]
  */
 public static function decrypt($sStr, $sKey)
 {
  $decrypted = openssl_decrypt(base64_decode($sStr), 'AES-128-ECB', $sKey, OPENSSL_RAW_DATA);
  return $decrypted;
 }
}

调试的时候发现,直接原因是因为开放平台里面填写的授权事件(该授权事件每十分钟会通送一次事件来更新ticket),即:

可据需求,自行改编。

美洲杯赔率 1

总结

这个地方填写的url,调试发现,这个URL没错,微信也有每10分钟推送过来,但是到最后一直接收不到ticket,看代码发现是因为解密微信过来的数据的时候报错了:

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

<?php 

function aes_decode($message, $encodingaeskey = '', $appid = '') { 
 $key = base64_decode($encodingaeskey . '='); 

 $ciphertext_dec = base64_decode($message); 
 $iv = substr($key, 0, 16); 

 $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); 
 mcrypt_generic_init($module, $key, $iv); 
 $decrypted = mdecrypt_generic($module, $ciphertext_dec); 
 mcrypt_generic_deinit($module); 
 mcrypt_module_close($module); 

 $pad = ord(substr($decrypted, -1)); 
 if ($pad < 1 || $pad > 32) { 
 $pad = 0; 
 } 

您可能感兴趣的文章:

即这个地方,由于我的环境是PHP 7.1,查找资料发现PHP 7.1已经废弃了Mcrypt,所以这个代码里面的mcrypt_*都是无法运行的。

解决:

查找资料发现,可以通过OpenSSL来代替Mcrypt(前提是已经安装了OpenSSL扩展,不过一般都是默认安装的)

openssl是一个功能强大的工具包,它集成了众多密码算法及实用工具。我们即可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密。

本文由美洲杯赔率发布于计算机教程,转载请注明出处:PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法详解美洲

上一篇:美洲杯赔率MySQL重置root密码提示"Unknown column ‘ 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • 剖析 【美洲杯赔率】rudy 访问控制
    剖析 【美洲杯赔率】rudy 访问控制
     前面,我们说Ruby没有函数,只有方法.而且实际上有不止一种方法.这一节我们介绍访问控制(access controls).   局部变量由小写字母或下划线(_)开头.局部变量
  • ruby 存取器 概念
    ruby 存取器 概念
     前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合
  • thinkphp美洲杯赔率: 内置字符串截取函数
    thinkphp美洲杯赔率: 内置字符串截取函数
    在thinkphp模板引擎里可以这样写:{$vo.title|msubstr=0,5,’utf-8′,false} thinkphp内置了一个可以媲美smarty的模板引擎,给我们带来了很大的方便。调用函数也一样,
  • 新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(
    新瓶旧酒ASP.NET AJAX(1) - 简单地过一下每个控件(
    % @ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs"     Inherits="Overview_Sample" Title="最简单的示例" % asp:Content ID="Content1" 
  • JavaScript 多级联动select
    JavaScript 多级联动select
    请到这里看09-08-18更新版本 能够根据自定义的菜单数据和select,自动设置联级的下拉菜单,可定义默认值。 类似的多级浮动菜单网上也很多实例,但大部分