当前位置:首页 > 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实现上传

php实现上传

PHP 文件上传实现 HTML 表单设置 创建一个包含文件上传字段的 HTML 表单,确保表单的 enctype 属性设置为 multipart/form-data,这是文件上传必需的设置。 <…

php 实现接口

php 实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不包含具体的实现。类可以实现(implement)接口,并必须实现接口中定义的所有方法。 定义接口 接口通…

php 实现购物车

php 实现购物车

PHP 实现购物车功能 购物车功能是电子商务网站的核心部分,可以通过 PHP 和 Session 或数据库来实现。以下是两种常见的实现方式: 使用 Session 存储购物车数据 Sessi…

基于php的设计与实现

基于php的设计与实现

PHP 设计与实现的关键要素 环境搭建与框架选择 PHP开发需配置服务器环境(如Apache/Nginx)、PHP版本(建议7.4+)及数据库(MySQL/MariaDB)。主流框架包括Laravel…

php实现分类

php实现分类

PHP实现分类的方法 数据库设计 创建分类表时,通常需要包含id、名称、父级id等字段。父级id用于实现多级分类结构。 CREATE TABLE categories ( id INT AU…

php 实现单链表

php 实现单链表

单链表的基本概念 单链表是一种线性数据结构,由节点组成,每个节点包含数据域和指向下一个节点的指针域。链表的头节点是访问整个链表的入口。 单链表的节点类实现 在PHP中,可以通过类来定义链表节点。每个…