当前位置: 首页> 最新文章列表> 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 实现数据加密和解密,包括对称加密、非对称加密和哈希函数,并提供了完整示例代码。通过这些方法,开发者可以有效保护敏感数据在传输和存储过程中的安全性。