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 进行加密解密,不过这种做法比较危险,还是不建议的

相关推荐
shizhenshide1 天前
社交媒体自动化:批量注册/发帖的验证码难题一站式解决
自动化·php·媒体·验证码·ezcaptcha
zwtahql1 天前
php源码级别调试
开发语言·php
Jerry_Gao9211 天前
【成长笔记】【web安全】深入Web安全与PHP底层:四天实战课程笔记
笔记·安全·web安全·php·漏洞
遗悲风1 天前
PHP伪协议全面解析:原理、常用场景、攻防实战与安全防护
android·安全·php
niaiheni1 天前
PHP文件包含
开发语言·php
无名的小三轮1 天前
第二章 信息安全概述
开发语言·php
吃不吃早饭1 天前
深入浅出:HTTPS 安全机制 + PHP 文件包含与伪协议全解析
安全·https·php
无名的小三轮1 天前
第三章 防火墙概述
开发语言·php
曲幽1 天前
Django入门指南:Python Web开发的“瑞士军刀”
python·django·flask·fastapi·web·pythonweb
明天…ling1 天前
php底层原理与安全漏洞实战
开发语言·php