【伸手党福利】【第五弹】windows下php7.2+安装mcrypt扩展,带CBC加解密示例【独家】【phpstudy】

基于phpstudy的小盆友们在搭建环境时候会发现老式mcrypt加密被去掉了,网上很难找到windows安装视频教程。
我在这里给大家教程的同时,也会解释网上的各种骚操作的由来。

首先,下载对应php的mcrypt插件。

地址:
https://windows.php.net/downloads/pecl/releases/mcrypt/

注意后面的php7.X版本号和是否nts(非安全线程)
在这里插入图片描述

下载下来会有两个文件和一个licence,将两个文件提取出来备用。

第二,确定自己使用的版本号

在这里插入图片描述
将下载的文件解压并放入相应的php的ext文件夹下:
这里以php7.3.4nts为例,默认地址见截图:

在这里插入图片描述

第三,设置环境变量

将相应的php版本目录放置在环境变量》用户变量》Path
在这里插入图片描述

这一步就是 网上教程当中解压的文件 为什么必须放置在apache目录或system32目录下的主要原因。
就是少了这一步操作

设置成功后检验是否成功:
运行cmd》
输入:

php -v

在这里插入图片描述

无视掉报错(因为你phpstudy已经运行php了,所以再运行新的实例会有警告)
看到版本号(7.3.4)那你就配对了。

第四,也是关键的一点,配置php.ini

由于版本更新的问题,现在网上绝大部分配置教程都是错的。

正确的配置方法是添加代码:【注意,两头都没有分号;】

extension=mcrypt

在ini当中,注意别选错php的版本了。
位置搜索;extension=,添加在其中任意行即可。
在这里插入图片描述

重启apache或nginx,因为很多人都会忘,所以单独写

在这里插入图片描述

检测是否启用:

编写php:

<?php
phpinfo();
?>

查找mcrypt,发现即可
在这里插入图片描述

测试执行CBC加解密

<?php

class MagicCrypt
{
  private $iv = "加密秘钥";//密钥偏移量IV,可自定义

  private $encryptKey = "AESkeyAESkeyAESkey";//AESkey,可自定义

  //加密
  public function encrypt($encryptStr)
  {
    $localIV = $this->iv;
    $encryptKey = $this->encryptKey;

    //Open module
    @$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);

    //print "module = $module <br/>" ;

    @mcrypt_generic_init($module, $encryptKey, $localIV);

    //Padding
    @$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $pad = $block - (strlen($encryptStr) % $block); //Compute how many characters need to pad
    $encryptStr .= str_repeat(chr($pad), $pad); // After pad, the str length must be equal to block or its integer multiples

    //encrypt
    @$encrypted = mcrypt_generic($module, $encryptStr);

    //Close
    @mcrypt_generic_deinit($module);
    @mcrypt_module_close($module);

    return base64_encode($encrypted);

  }

  //解密
  public function decrypt($encryptStr)
  {
    $localIV = $this->iv;
    $encryptKey = $this->encryptKey;

    //Open module
    @$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);

    //print "module = $module <br/>" ;

    @mcrypt_generic_init($module, $encryptKey, $localIV);

    $encryptedData = base64_decode($encryptStr);
    @$encryptedData = mdecrypt_generic($module, $encryptedData);

    return $encryptedData;
  }
}

$encryptString = '胜利';
$encryptObj = new MagicCrypt();
$result = $encryptObj->encrypt($encryptString);//加密结果
var_dump($encryptObj->decrypt($string));
echo "<br/>";
$decryptString = $decryptString = $encryptObj->decrypt($result);//解密结果
echo $result . "<br/>";
echo $decryptString . "<br/>";
?>

执行如果报错
在这里插入图片描述
因为函数已经废弃,所以强行去除报错:【记得加上@】

其他使用方式:
https://www.cnblogs.com/geniusxjq/p/4096570.html

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值