php实现des加密
PHP 实现 DES 加密
DES(Data Encryption Standard)是一种对称加密算法,PHP 提供了内置函数支持 DES 加密。以下是实现方法:
使用 mcrypt 扩展(PHP 7.1 以下版本)
$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+ 推荐)
$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);






