php实现des加密
DES 加密实现方法
在 PHP 中实现 DES 加密可以通过内置的 mcrypt 或 openssl 扩展完成。由于 mcrypt 已在 PHP 7.2 中废弃,推荐使用 openssl 扩展。

使用 OpenSSL 扩展实现 DES 加密
DES 加密需要密钥和初始化向量(IV),以下是完整的实现代码:
$data = '需要加密的数据';
$key = '8字节密钥'; // DES 密钥必须为 8 字节
$iv = '12345678'; // IV 必须为 8 字节
// DES-CBC 加密
$encrypted = openssl_encrypt($data, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
$encryptedBase64 = base64_encode($encrypted);
// DES-CBC 解密
$decrypted = openssl_decrypt(base64_decode($encryptedBase64), 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
使用 Mcrypt 扩展实现 DES 加密(PHP < 7.2)
$data = '需要加密的数据';
$key = '8字节密钥'; // 必须为 8 字节
$ivSize = mcrypt_get_iv_size(MCRYPT_DES, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
// DES-CBC 加密
$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC, $iv);
$encryptedBase64 = base64_encode($iv . $encrypted);
// DES-CBC 解密
$encrypted = base64_decode($encryptedBase64);
$iv = substr($encrypted, 0, $ivSize);
$encrypted = substr($encrypted, $ivSize);
$decrypted = mcrypt_decrypt(MCRYPT_DES, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
注意事项
- DES 密钥长度必须为 8 字节,不足会导致错误,超过会被截断
- 初始化向量 IV 必须为 8 字节
- DES 算法安全性较低,推荐使用更安全的 AES 加密
- CBC 模式需要相同的 IV 用于加密和解密
- 输出结果通常需要 base64 编码以便存储和传输
安全建议
由于 DES 已被证明不够安全,对于新的应用程序,建议使用 AES 加密:
// 更安全的 AES-256-CBC 加密示例
$encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);






