PHP8.3 使用openssl 的 DES-ECB 模式加密

因为开发环境要升级了,由原本的 7 升级到8.3,以前在7 的时候加密方式是这样的

复制代码
openssl_encrypt($content, 'DES-ECB', $key)

在PHP8.2之后,已经开始不用 DES-ECB 模式,可以使用 phpseclib/phpseclib 平替,我使用的是2.0的版本,目前最新应该是3.0,但是安装了3.0后,各种报错,最后还是安装2.0

复制代码
composer require phpseclib/phpseclib:~2.0

打开 \vendor\phpseclib\phpseclib\phpseclib\Crypt\DES.php

有段示例代码

复制代码
 * Here's a short example of how to use this library:
 * <code>
 * <?php
 *    include 'vendor/autoload.php';
 *
 *    $des = new \phpseclib\Crypt\DES();
 *
 *    $des->setKey('abcdefgh');//设置Key
 *    //下面的code 可以忽略
 *    $size = 10 * 1024;
 *    $plaintext = '';
 *    for ($i = 0; $i < $size; $i++) {
 *        $plaintext.= 'a';
 *    }
 *
 *    echo $des->decrypt($des->encrypt($plaintext));//加密和解密调用的方法
 * ?>
 * </code>

DES() 有个构造函数的,默认是 des-cbc 的模式,详细可以在文档中查看

phpseclib\Crypt\DES | phpseclib API Documentation

在Laravel 中,整合出来就是这样

复制代码
use phpseclib\Crypt\DES;


$des = new DES(DES::MODE_ECB);
$des->setKey($key);
$ciphertext = $des->encrypt($string);
return base64_encode($ciphertext);


$decryptedtext = $des->decrypt(base64_decode($string));
return $decryptedtext;

还有一种方法,就是安装nodejs,然后利用 php 调用命令 利用nodejs 进行加密解密,不过这种做法比较危险,还是不建议的

相关推荐
做萤石二次开发的哈哈3 小时前
萤石开放平台 萤石可编程设备 | 设备 Python SDK 使用说明
开发语言·网络·python·php·萤石云·萤石
steem_ding4 小时前
net.core 调优指南
开发语言·php
hteng5 小时前
逮住那个幽灵:Laravel+Supervisor后台任务高并发下 PDO Error 2014 的排查实录
php·laravel
zcfeng5307 小时前
PHP升级
开发语言·php
曲幽8 小时前
FastAPI搭档Pydantic:从参数验证到数据转换的全链路实战
python·fastapi·web·path·field·query·pydantic·basemodel·response_model
无情的8868 小时前
S11参数与反射系数的关系
开发语言·php·硬件工程
CRMEB11 小时前
高品质开源电商系统的技术内核:架构设计与技术优势
ai·开源·php·免费源码·源代码管理·商城源码
BingoGo11 小时前
别再手写 URL 解析器了:PHP 8.5 URI 扩展让 URL 处理更安全、更干净
后端·php
JaguarJack11 小时前
别再手写 URL 解析器了:PHP 8.5 URI 扩展让 URL 处理更安全、更干净
后端·php·服务端
007php0071 天前
mySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据
数据库·redis·git·mysql·面试·职场和发展·php