美文网首页
php接口加解密(3des)

php接口加解密(3des)

作者: GAOJUNJUN | 来源:发表于2018-12-21 14:13 被阅读54次

    <?php
    /*
    *2018-12-20
    *使用3DES加密
    *必须开启mcrypt扩展
    *算法公开,请对key严格保密

    */
    header("Content-Type:text/html;charset=utf-8");
    class DES3 {
    var $key = "2rnet2sq";

    var $iv = "ubspnhcw";
    
    function encrypt($input){
        $size = mcrypt_get_block_size(MCRYPT_3DES,MCRYPT_MODE_CBC);
        $input = $this->pkcs5_pad($input, $size);
        $key = str_pad($this->key,24,'0');
        $td = mcrypt_module_open(MCRYPT_3DES, '', MCRYPT_MODE_CBC, '');
        if( $this->iv == '' )
        {
            $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }
        else
        {
            $iv = $this->iv;
        }
        @mcrypt_generic_init($td, $key, $iv);
        $data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data = base64_encode($data);
        return $data;
    }
    function decrypt($encrypted){
        $encrypted = base64_decode($encrypted);
        $key = str_pad($this->key,24,'0');
        $td = mcrypt_module_open(MCRYPT_3DES,'',MCRYPT_MODE_CBC,'');
        if( $this->iv == '' )
        {
            $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }
        else
        {
            $iv = $this->iv;
        }
        $ks = mcrypt_enc_get_key_size($td);
        @mcrypt_generic_init($td, $key, $iv);
        $decrypted = mdecrypt_generic($td, $encrypted);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $y=$this->pkcs5_unpad($decrypted);
        return $y;
    }
    function pkcs5_pad ($text, $blocksize) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }
    function pkcs5_unpad($text){
        $pad = ord($text{strlen($text)-1});
        if ($pad > strlen($text)) {
            return false;
        }
        if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){
            return false;
        }
        return substr($text, 0, -1 * $pad);
    }
    function PaddingPKCS7($data) {
        $block_size = mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC);
        $padding_char = $block_size - (strlen($data) % $block_size);
        $data .= str_repeat(chr($padding_char),$padding_char);
        return $data;
    }
    

    function from_json(s){yz=preg_match('/[^,:{}\[\]0-9.-+Eaeflnr-u \n\r\t]/',s) ? '1' : '0'; if(yz==1){
    arr=json_decode(s,ture);
    return $arr;
    }
    }
    }

    // des = new DES3(); //加密 // echoret = des->encrypt("a=1&b=2") . "\n"; //解密 // echodes->decrypt($ret) . "\n";

    相关文章

      网友评论

          本文标题:php接口加解密(3des)

          本文链接:https://www.haomeiwen.com/subject/lnvmkqtx.html