header('Content-type: text/html; charset=utf-8');
define('Crypt_Key','wxstones@gmail.com');
// 参数类型
echo encrypt('&name=10086&id=13213&haha=test')."<br/>";
echo decrypt(encrypt('&name=10086&id=13213&haha=test'))."<br/><br/>";
//中文类型
echo encrypt('可计算中文加密')."<br/>";
echo decrypt(encrypt('可计算中文加密'))."<br/><br/>";
//英语类型
echo encrypt('English is fine, too')."<br/>";
echo decrypt(encrypt('English is fine, too'))."<br/><br/>";
//数字
echo encrypt('5465435185')."<br/>";
echo decrypt(encrypt('5465435185'))."<br/><br/>";
// 测试数字转换
echo ba
echo "<br/><br/>";
echo ba
/** 解密 */
function decrypt($encrypt){
//ba
$encrypt = ba
//打开加密算法模块
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
//初始化加密算法模块
mcrypt_generic_init($td,Crypt_Key, substr(Crypt_Key, 0, 16));
//执行解密
$decrypt = mdecrypt_generic($td, $encrypt);
//去除PKCS7补位
$decrypt = PKCS7Decode($decrypt, mcrypt_enc_get_key_size($td));
//关闭加密算法模块
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return substr($decrypt,4);
}
/** 加密 */
function encrypt($text){
//网络字节序
$size = pack("N", strlen($text));
//生成被加密字符串
$text = $size . $text;
//打开加密算法模块
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'', MCRYPT_MODE_CBC, '');
//使用PKCS7对明文进行补位
$text = PKCS7Encode($text, mcrypt_enc_get_key_size($td));
//初始化加密算法模块
mcrypt_generic_init($td,Crypt_Key, substr(Crypt_Key,0,16));
//执行加密
$encrypt = mcrypt_generic($td, $text);
//关闭加密算法模块
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
//输出密文
return ba
}
/** 加密PKCS7*/
function PKCS7Encode($text, $size){
//字符串长度
$str_size = strlen($text);
//填充长度
$pad_size = $size - ($str_size % $size);
$pad_size = $pad_size ? : $size;
//填充的字符
$pad_chr = chr($pad_size);
//执行填充
$text = str_pad($text, $str_size + $pad_size, $pad_chr, STR_PAD_RIGHT);
return $text;
}
/** 解密PKCS7*/
function PKCS7Decode($text, $size){
//获取补位字符
$pad_str = ord(substr($text, -1));
if ($pad_str < 1 || $pad_str > $size) {
return '';
} else {
return substr($text, 0, strlen($text) - $pad_str);
}
}