PHP实现固若金汤的文章ID加密方法

nide By nide at 2025-01-16 • 暂不可见      举报

诶...文章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();
?>

额...这不是,网上开源的嘛?人人都知道,但是没人用啊。你细看,和网上的不一样。

温馨提示

内容由用户共同创建和维护,并不代表站长交流论坛立场!
建议您独自对内容进行评估,核实并咨询相关的专业人士!

PHP实现固若金汤的文章ID加密方法PHP实现固若金汤的文章ID加密方法PHP实现固若金汤的文章ID加密方法PHP实现固若金汤的文章ID加密方法PHP实现固若金汤的文章ID加密方法+8  8 个回复 | 最后更新于 2025-01-16
该部分是隐藏区

登录后查看回复

该部分是隐藏区

登录后方可回帖

Loading...