php实现加密
PHP 加密方法
PHP 提供了多种加密方法,包括哈希加密、对称加密和非对称加密。以下是常见的实现方式:
哈希加密
哈希加密是单向加密,适用于密码存储等场景。PHP 提供了 password_hash 和 password_verify 函数:

$password = "user_password";
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
// 验证密码
if (password_verify($password, $hashedPassword)) {
echo "密码匹配";
} else {
echo "密码不匹配";
}
对称加密
对称加密使用相同的密钥进行加密和解密,常见算法如 AES。PHP 的 openssl_encrypt 和 openssl_decrypt 可以实现:

$data = "敏感数据";
$key = "your_secret_key";
$method = "AES-256-CBC";
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method));
$encrypted = openssl_encrypt($data, $method, $key, 0, $iv);
$decrypted = openssl_decrypt($encrypted, $method, $key, 0, $iv);
非对称加密
非对称加密使用公钥和私钥,如 RSA。PHP 的 openssl_public_encrypt 和 openssl_private_decrypt 可以实现:
$data = "敏感数据";
openssl_pkey_export($privateKey, $privateKeyStr);
$publicKey = openssl_pkey_get_details($privateKey)["key"];
openssl_public_encrypt($data, $encrypted, $publicKey);
openssl_private_decrypt($encrypted, $decrypted, $privateKey);
其他加密方式
PHP 还支持 mcrypt(已弃用)和 sodium 扩展(现代加密库)。例如,使用 sodium 进行加密:
$key = sodium_crypto_secretbox_keygen();
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$encrypted = sodium_crypto_secretbox($data, $nonce, $key);
$decrypted = sodium_crypto_secretbox_open($encrypted, $nonce, $key);
注意事项
- 对于密码存储,始终使用
password_hash和password_verify。 - 对称加密时,确保密钥和 IV(初始化向量)安全存储。
- 非对称加密适合需要密钥分发的场景,如 SSL/TLS。
- 避免使用已弃用的加密函数(如
mcrypt)。






