DES (Data Encryption Standard) 是一種經典的對稱加密演算法,雖然目前已不建議用於高安全性場景(密鑰長度僅 56 位),但在部分舊系統整合或特定協議要求下仍有應用。本文提供 PHP 實現 DES 加解密的簡潔範例,採用 ECB 模式並處理 PKCS#5/PKCS#7 填充。
/**
* DES 加密 (ECB 模式)
* @param string $str 待加密字串
* @param string $key 8 位元組密鑰
* @return string 加密後的二進位資料
*/
function des_encrypt($str, $key) {
// 獲取區塊大小 (DES 為 8 bytes)
$block = mcrypt_get_block_size('des', 'ecb');
// PKCS#5/PKCS#7 填充
$pad = $block - (strlen($str) % $block);
$str .= str_repeat(chr($pad), $pad);
// 加密
return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
}
/**
* DES 解密 (ECB 模式)
* @param string $str 加密後的二進位資料
* @param string $key 8 位元組密鑰
* @return string 解密後的原始字串
*/
function des_decrypt($str, $key) {
// 解密
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
// 移除填充
$len = strlen($str);
$block = mcrypt_get_block_size('des', 'ecb');
$pad = ord($str[$len - 1]);
return substr($str, 0, $len - $pad);
}
| 方案 | PHP 版本 | 特點 |
|---|---|---|
openssl_encrypt (AES-256-GCM) |
PHP 5.3+ | 硬體加速、認證加密、廣泛支援 |
sodium_crypto_aead_xchacha20poly1305_ietf_encrypt |
PHP 7.2+ | 現代加密、抗旁路攻擊、API 簡潔 |
defuse/php-encryption (Composer 套件) |
PHP 5.6+ | 純 PHP 實現、無需擴展、經過安全審計 |
更多 PHP 相關內容可參考本站專題:《PHP 加密方法總結》、《PHP 運算與運算符用法總結》、《PHP 網絡編程技巧總結》、《PHP 基本語法入門教程》、《PHP 面向對象程序設計入門教程》、《PHP 字符串用法總結》、《PHP+MySQL 數據庫操作入門教程》及《PHP 常見數據庫操作技巧匯總》。