php mcrypt CBC模式加密/解密问题

| 当我尝试使用php \的mcrypt扩展名对某些文本进行加密/解密时,CBC模式出现问题。我创建了一个类来执行此操作,它与CBC以外的其他模式都可以正常工作。 问题如下: 我使用明文“ 0”。我负责加密部分,到目前为止没有问题。但是每次我尝试解密时,都会得到类似的信息:
9��\'t\"�cryptography, silence is golden
。如您所见,文本的前8个字符是错误的。我不知道是什么原因导致了这种现象。 我班上负责这些操作的部分是:
public function encrypt($data)
    {
        $cypher = $this->_getCypher();
        $iv = $this->_getIv($cypher);

        return trim(base64_encode(mcrypt_encrypt($cypher, self::KEY, $data, MCRYPT_MODE_CBC, $iv)));
    }

    public function decrypt($data)
    {
        $cypher = $this->_getCypher();
        $iv = $this->_getIv($cypher);

        return trim(mcrypt_decrypt($cypher, self::KEY, base64_decode($data), MCRYPT_MODE_CBC, $iv));
    }

    protected function _getCypher()
    {
        return self::$_cyphers[$this->_algorithm];
    }

    protected function _getIv($cypher)
    {
        return mcrypt_create_iv(mcrypt_get_iv_size($cypher, MCRYPT_MODE_CBC), MCRYPT_RAND);
    }
上面示例中使用的算法是3DES。如前所述,使用其他模式(例如ECB),一切正常。 有什么建议么 ?     
已邀请:
您需要记住用于加密的IV,然后再次用于解密。     

要回复问题请先登录注册