PHP可逆加密/解密函数分享

yipeiwu_com6年前PHP代码库
函数源码
复制代码 代码如下:

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分页显示制作详细讲解

每页多少条记录($PageSize)?   当前是第几页($CurrentPageID)?   现在只要再给我一个结果集,我就可以显示某段特定的结果出来。   至于其他的参数,比如:上一...

php 字符串中是否包含指定字符串的多种方法

编写程序的时候,经常要处理字符串,最基本就是字符串的查找,在php检测字符串中是否包含指定字符串可以使用正则,如果你对正则不了解,那么有几个函数可以为您提供方便。 strpos() 函数...

php网页标题中文乱码的有效解决方法

刚刚测试了一个php的网页,结果发现标题中文乱码,于是乎,搜搜得到了一个比较不错的答案 在<title>标签前面添加以下一句话就解决了 复制代码 代码如下: <meta...

php使用simplexml_load_file加载XML文件并显示XML的方法

本文实例讲述了php使用simplexml_load_file加载XML文件并显示XML的方法。分享给大家供大家参考。具体实现方法如下: <?php $xml =...

php中文字符串截取方法实例总结

本文实例总结了php中文字符串截取方法,非常实用的技巧。分享给大家供大家参考。具体方法分析如下: 用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个...