技术饭

PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。

copylian    0 评论    1181 浏览    2020.11.30

PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。

平时我们使用的PHP加密方法都是一些不可逆的加密函数为:md5()、sha1()、crypt()等。md5() 用来计算 MD5 哈稀。语法为:md5(); crypt() 将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。

可逆转的加密有:base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode() 。base64_encode() 将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。 它的解密函数为:base64_decode(); 将复回原样。urlencode() 将字符串以 URL 编码。例如空格就会变成加号。它的解密函数为:urldecode(); 将复回原样。

1、简单对称加密算法之加密、 简单对称加密算法之解密

/**

 * 简单对称加密算法之加密

 * @param String $string 需要加密的字串

 * @param String $skey 加密EKY

 */

function encode($string = '', $skey = 'cxphp') {

    if (!is_numeric($string) && empty($string)) {

        return '';

    }

    $strArr = str_split(base64_encode($string));

    $strCount = count($strArr);

    foreach (str_split($skey) as $key => $value) {

        $key < $strCount && $strArr[$key] .= $value;

    }


    return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));

}


/**

 * 简单对称加密算法之解密

 * @param String $string 需要解密的字串

 * @param String $skey 解密KEY

 */

function decode($string = '', $skey = 'cxphp') {

    if (!is_numeric($string) && empty($string)) {

        return '';

    }

    $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);

    $strCount = count($strArr);

    foreach (str_split($skey) as $key => $value) {

        $key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];

    }


    return base64_decode(join('', $strArr));

}


/**

 * [randcode 获取0-9,a-z,A-Z的随机数]

 * @param  integer $length [长度]

 */

function randcode($length = 6) {

    $range_arr = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));

    shuffle($range_arr);

    $range_arr = array_splice($range_arr, 0, $length);

    return implode('', $range_arr);

}


2、自定义混淆加密、解密方法


//加密参数

private $scret_key = 'abc';


/**

* [encode 加密]

* @param  string $value [加密字段]

*/

private function encode($value = '') {

        //如果是空则返回空

        if(empty($value)){

            return '';

       }


        //返回加密的随机字符串

        return $value . $this->scret_key . md5(randcode(10));

}


/**

     * [decode 解密]

     * @param  string $value [解密字段]

     */

private function decode($value = '') {

        //如果是空则返回空

        if(empty($value)){

            return '';

        }


        //返回加密的随机字符串

        $res = explode($this->scret_key, $value);

        return $res[0];

}


3、使用

1)、加密:先混淆加密,再对称加密

1606717456(1).png

1606717551(1).png

2)、解密:先对称解密,再混淆解密

1606717620(1).png


飓风呀
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
PHP 加密 解密 

文明上网理性发言!

  • 还没有评论,沙发等你来抢