要求url链接加密后可以解密
时间: 2023-07-30 13:04:53 浏览: 49
好的,以下是一个可以加密和解密长链接的 PHP 代码示例:
```php
// 待加密的长链接
$url = "https://www.example.com/longurl";
// 密钥,需要保密
$key = "mysecretkey";
// 加密算法,这里使用 AES-128-CBC
$algorithm = "aes-128-cbc";
// 生成随机向量
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($algorithm));
// 加密长链接
$encrypted_url = openssl_encrypt($url, $algorithm, $key, OPENSSL_RAW_DATA, $iv);
// 将向量和密文合并成一个字符串
$encrypted_data = base64_encode($iv . $encrypted_url);
// 输出加密后的结果
echo "加密后的链接:" . $encrypted_data . "\n";
// 解密链接
$encrypted_data = base64_decode($encrypted_data);
$iv_length = openssl_cipher_iv_length($algorithm);
$iv = substr($encrypted_data, 0, $iv_length);
$encrypted_url = substr($encrypted_data, $iv_length);
// 解密长链接
$decrypted_url = openssl_decrypt($encrypted_url, $algorithm, $key, OPENSSL_RAW_DATA, $iv);
// 输出解密后的结果
echo "解密后的链接:" . $decrypted_url;
```
以上代码中,我们首先使用随机向量和密钥对长链接进行 AES-128-CBC 加密,并将向量和密文合并成一个字符串,最后输出加密后的结果。然后再将加密后的字符串进行解密,先将其进行 Base64 解码,然后将向量和密文分离,并使用相同的密钥和向量进行解密,最终输出解密后的链接。需要注意的是,解密时需要使用相同的密钥和加密时使用的算法、向量等参数,否则无法正确解密。