php实现des
PHP 实现 DES 加密解密
DES(Data Encryption Standard)是一种对称加密算法,PHP 提供了内置函数支持 DES 加密解密操作。以下是实现方法:
使用 mcrypt 扩展(PHP 7.1 以下版本)
mcrypt 是早期 PHP 版本中常用的加密扩展,但在 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);
$decrypted = mcrypt_decrypt(MCRYPT_DES, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
使用 openssl 扩展(推荐)
openssl 是现代 PHP 版本中推荐的加密扩展,支持更安全的实现方式。
$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);
$decrypted = openssl_decrypt($encrypted, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
注意事项
- 密钥长度必须为 8 字节,不足或超出部分可能导致错误或安全风险。
- 初始化向量(IV)应随机生成,并在加密和解密时保持一致。
- DES 算法安全性较低,建议在生产环境中使用更安全的算法如 AES。
示例完整代码
$key = '12345678'; // 8 字节密钥
$data = 'Hello, DES!';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('DES-CBC'));
// 加密
$encrypted = openssl_encrypt($data, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo 'Encrypted: ' . base64_encode($encrypted) . "\n";
// 解密
$decrypted = openssl_decrypt($encrypted, 'DES-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo 'Decrypted: ' . $decrypted . "\n";






