PHPOpenSSL加密

帼民哥哥李小二 2021/9/15 13:04:57

加密类 两个解密类用哪个都可以类1:<?php // error_reporting(E_ALL || ~E_NOTICE); class Encrypt {/*** var string $method 加解密方法,可通过openssl_get_cipher_methods()获得*/private $method;/*** var string $secret_key 加解密的密钥*/private $key;/*** …

加密类


两个解密类用哪个都可以

类1:

<?php
// error_reporting(E_ALL || ~E_NOTICE);
class Encrypt
{
    /**
     * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得
     */
    private $method;

    /**
     * var string $secret_key 加解密的密钥
     */
    private $key;

    /**
     * var string $iv 加解密的向量,有些方法需要设置比如CBC
     */
    private $iv;

    /**
     * var string $options (不知道怎么解释,目前设置为0没什么问题)
     */
    private $options;

    /**
     * 构造函数
     *
     * @param string $key 密钥
     * @param string $method 加密方式
     * @param mixed $options openssl_簇
     * @param string $iv iv向量
     *
     */
    public function __construct($key = 'vxfw2hvftmna6ux3', $method = 'AES-128-ECB', $options = 0, $iv = 'tmna')
    {
        $this->key = $key;
        $this->method = $method;
        $this->options = $options;
        $this->iv = $iv;
    }

    
    /**
     * 加密方法,对数据进行加密,返回加密后的数据
     *
     * @param string $data 要加密的数据
     * @return string
     */
    public function encrypt($data)
    {
        return openssl_encrypt($data, $this->method, $this->key, $this->options);
    }

    /**
     * 解密方法,对数据进行解密,返回解密后的数据
     *
     * @param string $data 要解密的数据
     * @return string
     */
    public function decrypt($data)
    {
        return openssl_decrypt($data, $this->method, $this->key, $this->options);
    }
}

类2:

<?php
class ApUtilOpensslCrypt
{
    //密匙
    var $key = NULL;
    var $algorithm = NULL;
    var $mode = NULL;

    function __construct($key = "vxfw2hvf")
    {
        //初始化密匙
        $this->key = ($key != "") ? $key : "";
        //加密算法
        $this->algorithm = 'AES-128-ECB';
        //加密模式
        $this->mode = OPENSSL_RAW_DATA;
    }

    /**
     *
     * @param string $data 需要加密的字符串
     * @return string
     */
    public function encrypt($data)
    {
        return openssl_encrypt($data,$this->algorithm,$this->key);
        $data = $this->base64_url_encode(openssl_encrypt($data,$this->algorithm,$this->key));
        return $data;
    }

    /**
     * @param string $data 需要解密的字符串
     * @return string
     */
    public function decrypt($data)
    {
        return openssl_decrypt($this->base64_url_decode($data), $this->algorithm, $this->key, $this->mode);
        $decrypted = openssl_decrypt($this->base64_url_decode($data), $this->algorithm, $this->key, $this->mode);
        return $decrypted;
    }

    public function base64_url_encode($input) {
        return strtr($input, '+/=', '-_,');
    }

    public function base64_url_decode($input) {
        return base64_decode(strtr($input, '-_,', '+/='));
    }
}

用法:

$en_two_str = "Ed3MFQFVRRgO4Rz+hZVwtQ==";

//如果类在外部(没和用法在同一个文件里面),需要先引入类
// $aaa = new Encrypt();
// echo "加密前:".$str."\n";
// $en_str = $aaa->encrypt($str);
// echo "加密后:".$en_str."\n";
// echo "解密后:".$aaa->decrypt($en_str)."\n";

// echo "------------------------------"."\n";

$bbb = new ApUtilOpensslCrypt();
// echo "加密前:".$str."\n";
// $en_two_str = $bbb->encrypt($str);
// echo "加密后:".$en_two_str."\n";
echo "解密后:".$bbb->decrypt($en_two_str);
随时随地学软件编程-关注百度小程序和微信小程序
关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[PHPOpenSSL加密]http://www.zyiz.net/tech/detail-228485.html

上一篇:PHP使用array_reverse()函数

下一篇:Mac 下 idea phpstorm 通过命令行打开项目

赞(0)
关注微信小程序
程序员编程王-随时随地学编程

扫描二维码或查找【程序员编程王】

可以随时随地学编程啦!

技术文章导航 更多>
扫一扫关注最新编程教程