对字符串内容加解密

浏览:1368 发布日期:2017/07/26 分类:功能实现 关键字: 加密 解密 加解密 加密锁 加密内容
可对内容进行加密和反转解密
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 base_convert('100861513',10,16);
echo "<br/><br/>";
echo base_convert(base_convert('100861513',10,16),16,10);


/** 解密 */
function decrypt($encrypt){
//base64解码
$encrypt = base64_decode($encrypt);

//打开加密算法模块
$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 base64_encode($encrypt);
}

/** 加密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);
}
}
评论( 相关
后面还有条评论,点击查看>>