PHP可逆加密/解密函数分享
2015-01-24信息快讯网
很多项目的会员系统,都要求要有记住登录功能,在通过cookies实现功能是,由于要将客户信息直接保存到cookies,如果直接写入cookies势必会带来安全隐患,因此通过可逆加密后再保存到cookies相对就安全了
函数源码
function encrypt($data, $key) {
$prep_code = serialize($data);
$block = mcrypt_get_block_size('des', 'ecb');
if (($pad = $block - (strlen($prep_code) % $block)) < $block) {
$prep_code .= str_repeat(chr($pad), $pad);
}
$encrypt = mcrypt_encrypt(MCRYPT_DES, $key, $prep_code, MCRYPT_MODE_ECB);
return base64_encode($encrypt);
}
function decrypt($str, $key) {
$str = base64_decode($str);
$str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
$block = mcrypt_get_block_size('des', 'ecb');
$pad = ord($str[($len = strlen($str)) - 1]);
if ($pad && $pad < $block && preg_match('/' . chr($pad) . '{' . $pad . '}$/', $str)) {
$str = substr($str, 0, strlen($str) - $pad);
}
return unserialize($str);
}
调用函数
$key = 'okyo.cn';
$data = array('id' => 100, 'username' => 'customer', 'password' => 'e10adc3949ba59abbe56e057f20f883e');
$snarr = serialize($data);
$en = encrypt($data, $key);
$de = decrypt($en, $key);
echo "加密原型:";
print_r($data);
echo "
密钥:$key
加密结果:$en
解密结果:";
print_r($de);
解析PHP函数array_flip()在重复数组元素删除中的作用
PHP数组排序函数合集 以及它们之间的联系分析
基于php常用函数总结(数组,字符串,时间,文件操作)
php连接函数implode与分割explode的深入解析
解析strtr函数的效率问题
解析如何用php screw加密php源代码
php_screw 1.5:php加密: 安装与使用详解
具有时效性的php加密解密函数代码
一个简单的php加密解密函数(动态加密)
深入PHP数据加密详解
PHP fopen 读取带中文URL地址的一点见解
将时间以距今多久的形式表示,PHP,js双版本
PHP获取网址的顶级域名函数代码
Thinkphp模板中使用自定义函数的方法
PHP管理内存函数 memory_get_usage()使用介绍
PHP UTF8中文字符截断函数代码
php中将汉字转换成拼音的函数代码
php中3des加密代码(完全与.net中的兼容)
通过PHP的内置函数,通过DES算法对数据加密和解密
PHP的加密方式及原理
php实现rc4加密算法代码
php 的加密函数 md5,crypt,base64_encode 等使用介绍