• 技术文章 >后端开发 >PHP问题

    php加解密怎么做

    王林王林2019-09-26 11:48:49原创912

    基于这几个函数可逆转的加密为:base64_encode()urlencode()相对应的解密函数:base64_decode()urldecode() ,示例如下:

    1、第一种加密解密算法

    <?php  
    function encryptDecrypt($key, $string, $decrypt){   
        if($decrypt){   
            $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "12");   
            return $decrypted;   
        }else{   
            $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));   
            return $encrypted;   
        }   
    }   
    
    //加密:"z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk="  
    echo encryptDecrypt('password', 'Helloweba欢迎您',0);   
    //解密:"Helloweba欢迎您"  
    echo encryptDecrypt('password', 'z0JAx4qMwcF+db5TNbp/xwdUM84snRsXvvpXuaCa4Bk=',1);  
    ?>

    2、第二种解密解密算法

    <?php  
    //加密函数  
    function lock_url($txt,$key='www.xxxx.com'){  
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
        $nh = rand(0,64);  
        $ch = $chars[$nh];  
        $mdKey = md5($key.$ch);  
        $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
        $txt = base64_encode($txt);  
        $tmp = '';  
        $i=0;$j=0;$k = 0;  
        for ($i=0; $i<strlen($txt); $i++) {  
            $k = $k == strlen($mdKey) ? 0 : $k;  
            $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;  
            $tmp .= $chars[$j];  
        }  
        return urlencode($ch.$tmp);  
    }  
    //解密函数  
    function unlock_url($txt,$key='www.xxxx.com'){  
        $txt = urldecode($txt);  
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
        $ch = $txt[0];  
        $nh = strpos($chars,$ch);  
        $mdKey = md5($key.$ch);  
        $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
        $txt = substr($txt,1);  
        $tmp = '';  
        $i=0;$j=0; $k = 0;  
        for ($i=0; $i<strlen($txt); $i++) {  
            $k = $k == strlen($mdKey) ? 0 : $k;  
            $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);  
            while ($j<0) $j+=64;  
            $tmp .= $chars[$j];  
        }  
        return base64_decode($tmp);  
    }  
    ?>

    3、第三种加密解密算法

    <?php  
    
    //改进后的算法  
    //加密函数  
    function lock_url($txt,$key='test'){  
        $txt = $txt.$key;  
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
        $nh = rand(0,64);  
        $ch = $chars[$nh];  
        $mdKey = md5($key.$ch);  
        $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
        $txt = base64_encode($txt);  
        $tmp = '';  
        $i=0;$j=0;$k = 0;  
        for ($i=0; $i<strlen($txt); $i++) {  
            $k = $k == strlen($mdKey) ? 0 : $k;  
            $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;  
            $tmp .= $chars[$j];  
        }  
        return urlencode(base64_encode($ch.$tmp));  
    }  
    //解密函数  
    function unlock_url($txt,$key='test'){  
        $txt = base64_decode(urldecode($txt));  
        $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";  
        $ch = $txt[0];  
        $nh = strpos($chars,$ch);  
        $mdKey = md5($key.$ch);  
        $mdKey = substr($mdKey,$nh%8, $nh%8+7);  
        $txt = substr($txt,1);  
        $tmp = '';  
        $i=0;$j=0; $k = 0;  
        for ($i=0; $i<strlen($txt); $i++) {  
            $k = $k == strlen($mdKey) ? 0 : $k;  
            $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);  
            while ($j<0) $j+=64;  
            $tmp .= $chars[$j];  
        }  
        return trim(base64_decode($tmp),$key);  
    }  
    
    ?>

    对于不同需要,可以使用不同加密解密算法。

    推荐教程:PHP视频教程

    以上就是php加解密怎么做的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 加解密
    上一篇:PHP检查变量是否定义 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 世界最主流的加密演算法• php源码加密方法详解• php用什么工具加密• php加密的作用
    1/1

    PHP中文网