赶知识网

mcrypt 加密解密在php7.2以后不支持,最新解决方案,不需要装扩展

2020-07-16 / 1895次点击 php/mysql/apache PHP mcrypt

然后改成如下两个方法即可,(可以兼容mcrypt的加密解密)
PHP使用openssl_encrypt进行aes对称加密AES/CBC/PKCS5Padding与JAVA互通
对称加密使用秘钥加、解密数据,需要双方约定同一个秘钥,一旦约定过程中出现泄漏那么加密信息也就不安全了,但是它有加、解密快的特点。
aes算法 cbc模式 PKCS5Padding补码方式
与java加解密结果一致,代码如下:


class Aes
{
 
    private $iv = "";//iv的长度要根据加密方式和模式来定,aes-128-cbc偏移量的是16位
 
    private $key = ''; 
 
    function __construct($key, $iv)
    {
        $this->key = $key;
        $this->iv = $iv;
    }
 
 
    public function encrypt($input)
    {
        return base64_encode(openssl_encrypt($input, 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv));
    }
 
    public function decrypt($input)
    {
       return openssl_decrypt(base64_decode($input), 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);
    }




/**
     * 加密
     * @param $input
     * @param $key
     * @return string
     * @throws
     */
    private static function encryptForDES($input, $key){
        $data = openssl_encrypt($input, 'DES-ECB', $key, OPENSSL_RAW_DATA);
        $data = base64_encode($data);
        return $data;
    }


    /**
     * 解密
     * @param $input
     * @param $key
     * @return string
     * @throws
     */
    private static function decryptForDES($input, $key){
        $data = openssl_decrypt(base64_decode($input), 'DES-ECB', $key, OPENSSL_RAW_DATA);
        return $data;
    }

有用 0 没用 0

Top10

沪ICP备09053415号 © 赶知识网