PHP提供了多种加密算法来保护敏感数据,比如密码、信用卡号、社会安全号等。下面介绍如何使用PHP进行数据加密和解密。
PHP提供了多种加密函数,包括对称加密和非对称加密。
对称加密是指使用相同的密钥进行加密和解密。常见的对称加密算法有AES、DES、3DES等。
下面是使用AES算法进行加密和解密的示例:
// 加密
function encrypt($data, $key) {
$cipher = "aes-128-cbc";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($data, $cipher, $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $ciphertext);
}
// 解密
function decrypt($data, $key) {
$cipher = "aes-128-cbc";
$data = base64_decode($data);
$ivlen = openssl_cipher_iv_length($cipher);
$iv = substr($data, 0, $ivlen);
$ciphertext = substr($data, $ivlen);
return openssl_decrypt($ciphertext, $cipher, $key, OPENSSL_RAW_DATA, $iv);
}
在上面的示例中,我们使用了AES-128-CBC算法进行加密和解密。其中,$data
是要加密的数据,$key
是密钥。
非对称加密是指使用不同的密钥进行加密和解密。常见的非对称加密算法有RSA、DSA等。
下面是使用RSA算法进行加密和解密的示例:
// 生成密钥对
$res = openssl_pkey_new(array(
"private_key_bits" => 2048,
"private_key_type" => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($res, $private_key);
$public_key = openssl_pkey_get_details($res)["key"];
// 加密
function encrypt($data, $public_key) {
openssl_public_encrypt($data, $encrypted, $public_key);
return base64_encode($encrypted);
}
// 解密
function decrypt($data, $private_key) {
$data = base64_decode($data);
openssl_private_decrypt($data, $decrypted, $private_key);
return $decrypted;
}
在上面的示例中,我们使用了RSA算法进行加密和解密。首先使用openssl_pkey_new()
函数生成密钥对,然后使用openssl_public_encrypt()
函数进行加密,使用openssl_private_decrypt()
函数进行解密。
PHP提供了多种加密算法来保护敏感数据。在使用加密算法时,一定要注意密钥的保护,不要将密钥存储在明文文件中,最好使用加密算法保护密钥。