收藏一个简洁的PHP可逆加密函数

很多时候我们需要对数据进行加密解密,比如有些数据需要保存到cookie中,但又不能被用户轻易得到这些数据,这时我们就需要加密这些数据保存到cookie中,等我们需要使用它们的时候再解密。

加密的过程如下:

// 加密数据并写到cookie里
$cookie_data = $this -> encrypt("nowamagic", $data);
				
$cookie = array(
	'name'   => '$data',
	'value'  => $cookie_data,
	'expire' => $user_expire,
	'domain' => '',
	'path'   => '/',
	'prefix' => ''
);
$this->input->set_cookie($cookie);

// 加密
public function encrypt($key, $plain_text) {   
	$plain_text = trim($plain_text);   
	$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));   
	$c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);   
	return trim(chop(base64_encode($c_t)));   
}   

使用的时候再解密:

if( isset($_COOKIE['data']) )
{
	//用cookie给session赋值
	$_SESSION['data'] = decrypt("nowamagic", $_COOKIE['data']);
}

function decrypt($key, $c_t) {   
	$c_t = trim(chop(base64_decode($c_t)));   
	$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));   
	$p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);   
	return trim(chop($p_t));   
}  

这里记录下这个可逆的加密函数的使用。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-08-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Jackson0714

WCF安全2-非对称加密

2756
来自专栏互联网大杂烩

对称加密和非对称加密

对称密钥是双方使用相同的密钥 。 对称加密的要求   (1)需要强大的加密算法。算法至少应该满足:即使分析人员知道了算法并能访问一些或者更多的密文,也不能译...

1033
来自专栏技术博文

经典加密解密函数

<?php /** * 加密解密函数 * @param string $string 明文 或 密文 * @param string $oper...

29010
来自专栏北京马哥教育

5大导致"SSL证书不被信任"的原因

前言 今天在这里主要总结一下使用SSL的过程中遇到的坑(注意事项)。SSL是什么东西?(请自行搜索) 我(叫龙君)接触SSL证书已经4年了,算上今年,最开始我认...

42510
来自专栏alexqdjay

HTTPS的加密

3517
来自专栏技术碎碎念

HTTPS握手

作用 内容加密 建立一个信息安全通道,来保证数据传输的安全; 身份认证 确认网站的真实性 数据完整性 防止内容被第三方冒充或者篡改 https的采用了对称加密和...

2847
来自专栏linjinhe的专栏

非对称加密和混合密码系统

非对称加密算法的特点是,密钥分为加密密钥和解密密钥,并且这两个密钥是不一样的(非对称)。发送者用加密密钥对消息进行加密,接受者用解密密钥对密文进行解密。

1673
来自专栏Rgc

前端js,后台python实现RSA非对称加密

先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密;   # -*- encoding:utf-8 -*- import base64 from C...

5746
来自专栏葬爱家族

和HTTPS握个手

“姑娘们,起来吃毓婷啦!” 520刚过去,5月21号早上这句话就突然火了,像我这种单纯的小宝宝根本不知道是什么意思。

1243
来自专栏Python小屋

Python使用RSA+MD5实现数字签名

数字签名主要有防抵赖和防篡改两种功能:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名,二是能确定消息的完整性。 作为具体实现,发送报文...

4109

扫码关注云+社区