如何使用PHP实现加密解密
发布时间:2023-07-07 20:43:27
PHP提供了多种加密解密算法,可以用于保护敏感信息的安全传输和存储。下面将以常用的对称加密算法AES和非对称加密算法RSA为例,介绍如何使用PHP实现加密解密。
1. 对称加密算法AES
对称加密算法使用相同的密钥进行加密和解密,常用的对称加密算法有AES、DES等。下面演示如何使用PHP实现AES加密解密。
a. 加密
function aes_encrypt($data, $key) {
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv.$encrypted);
}
$key = '1234567890123456';
$data = 'Hello, World!';
$encryptedData = aes_encrypt($data, $key);
echo 'Encrypted Data: '.$encryptedData;
b. 解密
function aes_decrypt($encryptedData, $key) {
$data = base64_decode($encryptedData);
$iv = substr($data, 0, 16);
$data = substr($data, 16);
return openssl_decrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);
}
$decryptedData = aes_decrypt($encryptedData, $key);
echo 'Decrypted Data: '.$decryptedData;
2. 非对称加密算法RSA
非对称加密算法使用公钥加密,私钥解密。常用的非对称加密算法有RSA、DSA等。下面演示如何使用PHP实现RSA加密解密。
a. 生成公私钥对
$config = array(
"digest_alg" => "sha512",
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
);
$res = openssl_pkey_new($config);
openssl_pkey_export($res, $privateKey);
$publicKey = openssl_pkey_get_details($res)['key'];
echo 'Private Key: '.$privateKey;
echo 'Public Key: '.$publicKey;
b. 加密
function rsa_encrypt($data, $publicKey) {
openssl_public_encrypt($data, $encrypted, $publicKey);
return base64_encode($encrypted);
}
$data = 'Hello, World!';
$encryptedData = rsa_encrypt($data, $publicKey);
echo 'Encrypted Data: '.$encryptedData;
c. 解密
function rsa_decrypt($encryptedData, $privateKey) {
$encryptedData = base64_decode($encryptedData);
openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
return $decrypted;
}
$decryptedData = rsa_decrypt($encryptedData, $privateKey);
echo 'Decrypted Data: '.$decryptedData;
以上是使用PHP实现加密解密的基本示例。在实际应用中,需要注意密钥的安全保管和传递,以及加解密算法的选择和参数配置。另外,还可以使用其他加密库或扩展来增强加密解密功能,如Mcrypt、OpenSSL扩展等。
