一组变态的PHP加密解密

昵称:放飞梦想。欢迎学习交流!

//加密
function enCode($data, $key = 'abc123')

{

    $result = '';

    if ($data) {

        $data = strrev($data);

        $len_data = strlen($data);

        $key_md5 = hash('sha256', md5($key));

        $len_key = strlen($key_md5);

        $str = '';

        for ($i = 0; $i < $len_data; $i++) {

            $str .= $data[$i] ^ $key_md5[$i % $len_key];

        }

        $key_sha1 = sha1(crc32($key));

        $len_key = strlen($key_sha1);

        $data = '';

        for ($i = 0; $i < $len_data; $i++) {

            $data .= $str[$i] ^ $key_sha1[$i % $len_key];

        }

        $rand = mt_rand(1, 5);

        $pad = random_bytes($rand);

        $str = $pad . $data . $rand;

        $data = bin2hex($str);

        $data = str_replace(['a', 'b', 'c'], ['z', 'j', 'q'], $data);

        $data = str_rot13($data);

        $data = strrev($data);

        $data = str_replace(['0', '1', '2'], ['o', 'l', 'z'], $data);

        $result = $data;

    }

    return $result;

}

//解密

function deCode($data, $key = 'abc123')

{

    $result = '';

    if ($data) {

        $data = str_replace(['o', 'l', 'z'], ['0', '1', '2'], $data);

        $data = strrev($data);

        $data = str_rot13($data);

        $data = str_replace(['z', 'j', 'q'], ['a', 'b', 'c'], $data);

        if (ctype_xdigit($data) && strlen($data) % 2 == 0) {

            $data = hex2bin($data);

            $int = substr($data, -1);

            $data = substr($data, $int, -1);

            $len_data = strlen($data);

            $key_sha1 = sha1(crc32($key));

            $len_key = strlen($key_sha1);

            $str = '';

            for ($i = 0; $i < $len_data; $i++) {

                $str .= $data[$i] ^ $key_sha1[$i % $len_key];

            }

            $key_md5 = hash('sha256', md5($key));

            $len_key = strlen($key_md5);

            $data = '';

            for ($i = 0; $i < $len_data; $i++) {

                $data .= $str[$i] ^ $key_md5[$i % $len_key];

            }

            $data = strrev($data);

            $result = $data;

        }

    }

    return $result;

}

【EOF】结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值