php实现加解密
PHP 加密与解密方法
PHP 提供了多种加密与解密方法,可以根据需求选择适合的方案。以下是几种常见的实现方式:
使用 OpenSSL 加密解密
OpenSSL 提供了强大的加密功能,支持 AES、DES 等算法。

// 加密
function encrypt($data, $key, $iv) {
return openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv);
}
// 解密
function decrypt($data, $key, $iv) {
return openssl_decrypt($data, 'AES-256-CBC', $key, 0, $iv);
}
$key = 'your-secret-key-32-chars'; // 32 字节密钥
$iv = openssl_random_pseudo_bytes(16); // 16 字节 IV
$encrypted = encrypt('Hello World', $key, $iv);
$decrypted = decrypt($encrypted, $key, $iv);
使用 Mcrypt 加密解密
虽然 Mcrypt 在 PHP 7.2 后已弃用,但在旧版本中仍可使用。

// 加密
function mcrypt_encrypt($data, $key, $iv) {
return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
}
// 解密
function mcrypt_decrypt($data, $key, $iv) {
return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
}
$key = 'your-secret-key-16-chars'; // 16 字节密钥
$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
$encrypted = mcrypt_encrypt('Hello World', $key, $iv);
$decrypted = mcrypt_decrypt($encrypted, $key, $iv);
使用 Hash 加密
Hash 是单向加密,常用于密码存储。
$password = 'user-password';
$hashed = password_hash($password, PASSWORD_DEFAULT);
// 验证
if (password_verify($password, $hashed)) {
echo 'Password is valid';
}
使用 Base64 编码解码
Base64 不是加密,但可用于简单数据编码。
$encoded = base64_encode('Hello World');
$decoded = base64_decode($encoded);
注意事项
- 加密密钥和 IV 应妥善保管,避免泄露。
- 对于密码存储,优先使用
password_hash和password_verify。 - OpenSSL 是推荐的选择,Mcrypt 已过时。
- 确保使用足够的密钥长度和安全的算法(如 AES-256)。






