首页 > 解决方案 > 为什么 php openssl_encrypt 在 wordpress 模块中返回空字符串

问题描述

我需要加密 wordpress 数据库中的一些数据,所以我需要创建一个模块来做到这一点。到目前为止我还没有使用加密,所以经过研究,我想出了这个方法:

class ad_enc {
    public $enc_key;
    public function __construct($enc_key){
        $this->enc_key = base64_decode($enc_key); 
    }
    function encrypt($input) {      
        $encryption_key = $this->enc_key;
        // Generate an initialization vector
        $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));     
        $encrypted = openssl_encrypt($input, 'aes-128-cbc', $encryption_key, 0, $iv);       
        return base64_encode($encrypted . '::' . $iv);
    }

    function decrypt($input) {
        $encryption_key = $this->enc_key;       
        $data = base64_decode($input);
        $data = explode('::', $data);           
        list($encrypted_data, $iv) = $data;
        $decrypted = openssl_decrypt($encrypted_data, 'aes-128-cbc', $encryption_key, 0, $iv);
        return $decrypted;
    }
} 

加密方法有效,我可以使用它并将其插入数据库。但是解密方法什么也不返回。起初我使用的是 aes-256-cbc,所以我切换到 aes-128-cbc。但仍然没有结果。现在,我在这里缺少什么?

谢谢!

标签: phpwordpressencryption

解决方案


推荐阅读