當前位置: 首頁> 最新文章列表> PHP 數據加密與解密完整指南:對稱、非對稱及哈希實現

PHP 數據加密與解密完整指南:對稱、非對稱及哈希實現

M66 2025-10-14

引言

在現代互聯網環境中,數據安全至關重要。為了保護敏感信息,開發者常常需要對數據進行加密和解密操作。 PHP 作為流行的服務器端語言,提供了豐富的加密函數和庫,支持多種加密算法。本文將講解如何使用PHP 實現數據加密與解密,並附帶實用示例代碼。

使用對稱加密算法

對稱加密算法是最常用的加密方式,也稱共享密鑰加密。加密和解密使用同一把密鑰。 PHP 支持多種對稱加密算法,如AES、DES、3DES 等。下面是使用AES-256-CBC 算法的示例:

 function encrypt($data, $key) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($iv . $encrypted);
}

function decrypt($data, $key) {
    $data = base64_decode($data);
    $iv = substr($data, 0, openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = substr($data, openssl_cipher_iv_length('aes-256-cbc'));
    return openssl_decrypt($encrypted, 'aes-256-cbc', $key, 0, $iv);
}

$key = 'secret_key';
$data = 'sensitive_data';

$encryptedData = encrypt($data, $key);
echo 'Encrypted data: ' . $encryptedData . PHP_EOL;

$decryptedData = decrypt($encryptedData, $key);
echo 'Decrypted data: ' . $decryptedData . PHP_EOL;

代碼說明:

  • encrypt 函數通過openssl_encrypt 對數據加密,並使用base64_encode 轉為可讀字符串。
  • decrypt 函數先base64 解碼,再提取IV 與加密內容,最後使用openssl_decrypt 解密。
  • openssl_cipher_iv_length 返回指定加密算法的IV 長度。

使用非對稱加密算法

非對稱加密算法使用公鑰和私鑰兩把密鑰。公鑰用於加密,私鑰用於解密。 PHP 支持RSA 等算法。示例代碼如下:

 function encrypt($data, $publicKey) {
    openssl_public_encrypt($data, $encrypted, $publicKey);
    return base64_encode($encrypted);
}

function decrypt($encryptedData, $privateKey) {
    openssl_private_decrypt(base64_decode($encryptedData), $decrypted, $privateKey);
    return $decrypted;
}

$publicKey = openssl_pkey_get_public('file://path/to/public_key.pem');
$privateKey = openssl_pkey_get_private('file://path/to/private_key.pem');

$data = 'sensitive_data';

$encryptedData = encrypt($data, $publicKey);
echo 'Encrypted data: ' . $encryptedData . PHP_EOL;

$decryptedData = decrypt($encryptedData, $privateKey);
echo 'Decrypted data: ' . $decryptedData . PHP_EOL;

代碼說明:

  • encrypt 函數使用openssl_public_encrypt 加密數據,並用base64_encode 轉為字符串。
  • decrypt 函數通過base64_decode 還原二進制數據,再用openssl_private_decrypt 解密。

使用哈希函數

哈希函數將任意長度的數據映射為固定長度的哈希值,常用於校驗數據完整性,而非加解密。 PHP 常用MD5、SHA1、SHA256 等函數。示例:

 $data = 'sensitive_data';

$hashedData = md5($data);
echo 'Hashed data: ' . $hashedData . PHP_EOL;

代碼說明:

  • md5 函數計算給定數據的MD5 哈希值。

結論

本文講解瞭如何使用PHP 實現數據加密和解密,包括對稱加密、非對稱加密和哈希函數,並提供了完整示例代碼。通過這些方法,開發者可以有效保護敏感數據在傳輸和存儲過程中的安全性。