php实现des
DES 加密算法简介
DES(Data Encryption Standard)是一种对称加密算法,使用相同的密钥进行加密和解密。PHP 中可以通过 openssl 扩展或 mcrypt 扩展(已废弃)实现 DES 加密。
使用 OpenSSL 实现 DES 加密
PHP 的 openssl 扩展提供了 openssl_encrypt 和 openssl_decrypt 函数,支持 DES 加密。以下是示例代码:
$data = "Hello, DES!";
$key = "secretkey"; // 密钥长度需为 8 字节
$method = "DES-ECB"; // 使用 ECB 模式
// 加密
$encrypted = openssl_encrypt($data, $method, $key);
echo "Encrypted: " . $encrypted . "\n";
// 解密
$decrypted = openssl_decrypt($encrypted, $method, $key);
echo "Decrypted: " . $decrypted . "\n";
使用 Mcrypt 实现 DES 加密(已废弃)
mcrypt 扩展在 PHP 7.2 后已废弃,但旧代码中可能仍会见到。以下是示例:
$data = "Hello, DES!";
$key = "secretkey"; // 密钥长度需为 8 字节
$iv = "12345678"; // 初始化向量,长度需为 8 字节
// 加密
$encrypted = mcrypt_encrypt(MCRYPT_DES, $key, $data, MCRYPT_MODE_CBC, $iv);
$encrypted = base64_encode($encrypted);
echo "Encrypted: " . $encrypted . "\n";
// 解密
$decrypted = mcrypt_decrypt(MCRYPT_DES, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv);
echo "Decrypted: " . $decrypted . "\n";
密钥和模式注意事项
- 密钥长度:DES 密钥必须为 8 字节(64 位),但实际有效密钥为 56 位(8 位用于奇偶校验)。
- 加密模式:常用模式包括 ECB、CBC 等。ECB 模式简单但不安全,CBC 模式更安全但需要初始化向量(IV)。
- 填充方式:默认使用 PKCS#7 填充,确保数据长度符合加密要求。
安全建议
- DES 已不再安全,推荐使用 AES(Advanced Encryption Standard)替代。
- 确保密钥和 IV 安全存储,避免硬编码在代码中。
- 使用更安全的模式(如 CBC)并配合 HMAC 验证数据完整性。







