php实现cookie加密解密

1.加密解密类

 1 class Mcrypt
 2 {
 3     /**
 4      * 解密
 5      * 
 6      * @param string $encryptedText 已加密字符串
 7      * @param string $key  密钥
 8      * @return string
 9      */
10     public static function _decrypt($encryptedText,$key = null)
11     {
12         $key = $key === null ? Config::get('secret_key') : $key;
13         $cryptText = base64_decode($encryptedText);
14         $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
15         $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
16         $decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptText, MCRYPT_MODE_ECB, $iv);
17         return trim($decryptText);
18     }
19  
20     /**
21      * 加密
22      *
23      * @param string $plainText 未加密字符串 
24      * @param string $key        密钥
25      */
26     public static function _encrypt($plainText,$key = null)
27     {
28         $key = $key === null ? Config::get('secret_key') : $key;
29         $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
30         $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
31         $encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainText, MCRYPT_MODE_ECB, $iv);
32         return trim(base64_encode($encryptText));
33     }
34 }

2.cookie加密解密类

 1 <?php
 2 class Cookie extends Mcrypt
 3 {
 4     /**
 5      * 删除cookie
 6      * 
 7      * @param array $args
 8      * @return boolean
 9      */
10     public static function del($args)
11     {
12         $name = $args['name'];
13         $domain = isset($args['domain']) ? $args['domain'] : null;
14         return isset($_COOKIE[$name]) ? setcookie($name, '', time() - 86400, '/', $domain) : true;
15     }
16      
17     /**
18      * 得到指定cookie的值
19      * 
20      * @param string $name
21      */
22     public static function get($name)
23     {
24         return isset($_COOKIE[$name]) ? parent::_decrypt($_COOKIE[$name]) : null;
25     }
26      
27     /**
28      * 设置cookie
29      *
30      * @param array $args
31      * @return boolean
32      */
33     public static function set($args)
34     {
35         $name = $args['name'];
36         $value= parent::_encrypt($args['value']);
37         $expire = isset($args['expire']) ? $args['expire'] : null;
38         $path = isset($args['path']) ? $args['path'] : '/';
39         $domain = isset($args['domain']) ? $args['domain'] : null;
40         $secure = isset($args['secure']) ? $args['secure'] : 0;
41         return setcookie($name, $value, $expire, $path, $domain, $secure);
42     }
43 }

作者:zqifa

出处:https://www.l1mn.com

PHP 中,可以使用 `setcookie` 函数来设置 cookie。但是,如果希望对 cookie 进行加密,可以在设置 cookie 时,先对需要保存的数据进行加密,然后再将加密后的数据保存到 cookie 中。 以下是一个使用 PHPcookie 进行加密的示例: ```php // 加密函数 function encrypt($data, $key) { $iv = random_bytes(16); $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); return base64_encode($encrypted) . ':' . base64_encode($iv); } // 解密函数 function decrypt($data, $key) { list($encrypted, $iv) = explode(':', $data, 2); $encrypted = base64_decode($encrypted); $iv = base64_decode($iv); return openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); } // 设置加密后的 cookie $key = 'my_secret_key'; // 定义一个密钥 $data = 'hello world'; // 需要保存的数据 $encrypted_data = encrypt($data, $key); // 对数据进行加密 setcookie('my_cookie', $encrypted_data, time()+3600); // 设置 cookie // 读取加密后的 cookie if (isset($_COOKIE['my_cookie'])) { $encrypted_data = $_COOKIE['my_cookie']; $data = decrypt($encrypted_data, $key); // 对数据进行解密 echo $data; // 输出解密后的数据 } ``` 上述示例中,使用了 `openssl_encrypt` 和 `openssl_decrypt` 函数来进行加密和解密。需要注意的是,这两个函数需要开启 OpenSSL 扩展。同时,为了保证加密的安全性,应该使用一个随机生成的 IV(初始化向量)来进行加密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z_qifa

此处弱弱求打赏~~万一有好心人

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值