当前位置:首页 > PHP

php实现desede

2026-03-12 17:52:12PHP

PHP 实现 3DES 加密

3DES(Triple DES)是一种对称加密算法,通过对 DES 算法进行三次加密来提高安全性。在 PHP 中可以使用 mcryptopenssl 扩展实现 3DES 加密。由于 mcrypt 扩展在 PHP 7.1 后被废弃,推荐使用 openssl 扩展。

php实现desede

使用 OpenSSL 扩展实现 3DES

确保 PHP 已安装 OpenSSL 扩展,可以通过 phpinfo() 查看是否已启用。

php实现desede

// 3DES 加密
function encrypt3DES($data, $key) {
    $method = 'DES-EDE3-CBC';
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
    $encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($iv . $encrypted);
}

// 3DES 解密
function decrypt3DES($data, $key) {
    $data = base64_decode($data);
    $method = 'DES-EDE3-CBC';
    $ivLength = openssl_cipher_iv_length($method);
    $iv = substr($data, 0, $ivLength);
    $encrypted = substr($data, $ivLength);
    return openssl_decrypt($encrypted, $method, $key, OPENSSL_RAW_DATA, $iv);
}

// 示例用法
$key = '0123456789abcdef0123456789abcdef0123456789abcdef'; // 24 字节的密钥
$plaintext = 'Hello, 3DES!';
$encrypted = encrypt3DES($plaintext, $key);
$decrypted = decrypt3DES($encrypted, $key);

echo "Plaintext: $plaintext\n";
echo "Encrypted: $encrypted\n";
echo "Decrypted: $decrypted\n";

使用 Mcrypt 扩展实现 3DES(不推荐)

如果仍在使用 PHP 7.1 以下版本,可以使用 mcrypt 扩展。

// 3DES 加密
function encrypt3DES($data, $key) {
    $ivSize = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
    $encrypted = mcrypt_encrypt(MCRYPT_3DES, $key, $data, MCRYPT_MODE_CBC, $iv);
    return base64_encode($iv . $encrypted);
}

// 3DES 解密
function decrypt3DES($data, $key) {
    $data = base64_decode($data);
    $ivSize = mcrypt_get_iv_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
    $iv = substr($data, 0, $ivSize);
    $encrypted = substr($data, $ivSize);
    return mcrypt_decrypt(MCRYPT_3DES, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
}

// 示例用法
$key = '0123456789abcdef0123456789abcdef'; // 16 或 24 字节的密钥
$plaintext = 'Hello, 3DES!';
$encrypted = encrypt3DES($plaintext, $key);
$decrypted = decrypt3DES($encrypted, $key);

echo "Plaintext: $plaintext\n";
echo "Encrypted: $encrypted\n";
echo "Decrypted: $decrypted\n";

注意事项

  • 密钥长度应为 24 字节(192 位),但某些实现也支持 16 字节(128 位)密钥。
  • 初始化向量(IV)应为 8 字节(64 位)。
  • 使用 CBC 模式时,IV 应是随机且唯一的。
  • 加密后的数据通常需要 Base64 编码以便存储或传输。
  • 确保密钥的安全存储,避免硬编码在代码中。

标签: phpdesede
分享给朋友:

相关文章

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php 实现秒杀

php 实现秒杀

PHP 实现秒杀的关键技术 秒杀系统需要解决高并发、超卖、性能瓶颈等问题。以下是实现秒杀的核心方案: 使用 Redis 预减库存 将商品库存提前加载到 Redis 中,通过原子操作保证库存准确性:…

php 实现排序

php 实现排序

PHP 实现数组排序的方法 PHP 提供了多种内置函数和方法来实现数组排序,适用于不同的排序需求。以下是一些常见的排序实现方式: 使用 sort() 函数对数组进行升序排序 sort() 函数对数组…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php 伪静态实现

php 伪静态实现

PHP 伪静态实现方法 伪静态(URL Rewrite)是一种通过服务器配置将动态URL转换为静态URL的技术,提升URL的可读性和SEO效果。以下是几种常见的实现方式: 使用Apache的mod_…

php登陆功能实现

php登陆功能实现

实现PHP登录功能 数据库准备 创建一个用户表存储登录信息,基本字段包括用户名、密码(需加密)等: CREATE TABLE users ( id INT AUTO_INCREMENT PR…