当前位置:首页 > PHP

php实现des加密

2026-02-13 17:12:53PHP

PHP 实现 DES 加密

DES(Data Encryption Standard)是一种对称加密算法,PHP 提供了内置函数支持 DES 加密。以下是实现方法:

使用 mcrypt 扩展(PHP 7.1 以下版本)

php实现des加密

$key = 'your-secret-key'; // 密钥长度必须为 8 字节
$data = 'data-to-encrypt';
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_CBC), MCRYPT_RAND);

$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC, $iv);
$encrypted = base64_encode($encrypted); // 便于存储传输

使用 openssl 扩展(PHP 7.1+ 推荐)

php实现des加密

$key = 'your-secret-key'; // 密钥长度必须为 8 字节
$data = 'data-to-encrypt';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('DES-CBC'));

$encrypted = openssl_encrypt($data, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
$encrypted = base64_encode($iv . $encrypted); // 合并 IV 和密文

DES 解密示例

$encryptedData = base64_decode($encryptedData);
$ivLength = openssl_cipher_iv_length('DES-CBC');
$iv = substr($encryptedData, 0, $ivLength);
$cipherText = substr($encryptedData, $ivLength);

$decrypted = openssl_decrypt($cipherText, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);

注意事项

  • DES 密钥长度固定为 8 字节(64 位),过短会补空字符,过长会被截断
  • 必须使用初始化向量(IV)增强安全性,且每次加密应生成随机 IV
  • DES 已被认为不够安全,建议使用 AES(aes-256-cbc)等更安全的算法
  • 存储或传输时应进行 Base64 编码处理二进制数据

安全建议

对于新项目,推荐使用更安全的 AES 加密:

$method = 'aes-256-cbc';
$key = openssl_random_pseudo_bytes(32); // 256 位密钥
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));

$encrypted = openssl_encrypt($data, $method, $key, 0, $iv);

标签: phpdes
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session是…

php实现异步

php实现异步

PHP 实现异步的方法 PHP 本身是同步执行的脚本语言,但可以通过以下方法模拟异步操作或实现异步效果: 使用多进程(pcntl_fork) 通过 pcntl_fork 创建子进程实现异步,适用于…

php实现下载

php实现下载

PHP实现文件下载 使用PHP实现文件下载可以通过设置HTTP头部信息强制浏览器下载文件而非直接打开。以下是几种常见的方法: 方法一:直接输出文件内容 $file_path = 'path/to/…

php 实现类

php 实现类

PHP 类的基本实现 在 PHP 中,类通过 class 关键字定义,后跟类名和一对花括号。类名通常遵循大驼峰命名法(如 ClassName)。以下是基本语法: class ClassName {…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php 实现无限分类

php 实现无限分类

无限分类的实现方法 无限分类通常用于构建多层级结构的数据,如商品分类、菜单管理等。以下是几种常见的实现方式: 邻接列表模型(Adjacency List) 这是最简单的实现方式,每个分类记录存储其父…