诶...文章ID加密没用?你可能没找对加密方法。下面附上代码,绝对能难倒一片小白。
<?php error_reporting(0); header('Content-type:text/html;charset=utf-8'); //加密方法 if (!function_exists('_encrypt')) { function _encrypt($data, $key) { $key = md5($key); $x = 0; $len = strlen($data); $l = strlen($key); $char = ''; $str = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= $key{$x}; $x++; } for ($i = 0; $i < $len; $i++) { $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256); } return str_replace('=','', base64_encode($str)); } } //解密方法 if (!function_exists('_decrypt')) { function _decrypt($data, $key) { $key = md5($key); $x = 0; $data = base64_decode($data); $len = strlen($data); $l = strlen($key); $char = ''; $str = ''; for ($i = 0; $i < $len; $i++) { if ($x == $l) { $x = 0; } $char .= substr($key, $x, 1); $x++; } for ($i = 0; $i < $len; $i++) { if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) { $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1))); } else { $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1))); } } return str_replace('=','', $str); } } //使用方法 define('AKEY','123456');//加密秘钥 $id = '6';//原字符 注意:这是字符串加密,不能写 $id = 111; 这种数字类型 echo '原字符:'.$id.'<br>'; //可在前面补0 实现对称加密 比如 小于 9 位数,在前面补 0 $length = strlen($id); if ($length < 9) { $id = str_pad($id, 9, '0', STR_PAD_LEFT); } echo '补零后:'.$id.'<br>';//补零后 实现对称加密 $aid = _encrypt($id,AKEY);//加密后 echo '加密后:'.$aid.'<br>'; echo '转小写:'.strtolower($aid).'<br>'; echo '转大写:'.strtoupper($aid).'<br>'; $cid = _decrypt($aid,AKEY);//解密后 echo '解密后:'.$cid.'<br>补零就行了,下面加字母的方式不推荐<br><br>'; echo '下面是番外,看看就行了<br>'; //太过于对称了,前面都一样了,的要在前面加随机字母才行 //写在前面:不推荐加字母,因为加字母会有特殊符号,比如 + / 等特殊符号 //随机获取字母的方法 function ABC($rew) { $Str = ''; for ($i = 0; $i < $rew; $i++) { $cii = rand(65, 90); if (rand(0, 1)) { $cii += 32; } $Str.= chr($cii); } return $Str; } //使用示例 $Letters = ABC(5);//随机获取5个字母 不区分大小写 echo '加字母:'.$Letters.'<br>'; echo '补字母:'.$Letters.$id.'<br>';//补字母后 实现对称加密 $eid = _encrypt($Letters.$id,AKEY);//加密后 echo '加密后:'.$eid.'<br>'; $fid = _decrypt($eid,AKEY);//解密后 echo '解密后:'.$fid.'<br>你看,它不就对称了嘛!'; exit(); ?>
额...这不是,网上开源的嘛?人人都知道,但是没人用啊。你细看,和网上的不一样。
+8 8 个回复 | 最后更新于 2025-01-16
登录后方可回帖