PHP blowfish(CBC) 加密解密函数

<?php
/**
 * php blowfish 算法
 * Class blowfish
 */
class blowfish
{
    //key
    private $key256 = '1234567890123456ABCDEFGHIJKLMNOP';
    private $key128 = '1234567890123456';
    //向量
    public $iv = 0;
     
    function __construct(){
        $this->iv = substr($this->key256, 0, 16);
    }
  
    /**
     * blowfish + cbc模式 + pkcs5补码  加密
     * @param string $str 需要加密的数据
     * @return string 加密后base64加密的数据
     */
    public function blowfish_cbc_pkcs5_encrypt($str)
    {
        $cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
  
        //pkcs5补码
        $size = mcrypt_get_block_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
        $str = $this->pkcs5_pad($str, $size);
  
        if (mcrypt_generic_init($cipher, $this->key256, $this->iv) != -1)
        {
           $cipherText = mcrypt_generic($cipher, $str);
           mcrypt_generic_deinit($cipher);
  
           return base64_encode($cipherText);
        }
  
        mcrypt_module_close($cipher);
    }
  
    /**
     * blowfish + cbc模式 + pkcs5  解密 去补码
     * @param string $str 加密的数据
     * @return string 解密的数据
     */
    public function blowfish_cbc_pkcs5_decrypt($str)
    {
        $cipher = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
  
        if (mcrypt_generic_init($cipher, $this->key256, $this->iv) != -1)
        {
           $cipherText = mdecrypt_generic($cipher, base64_decode($str));
           mcrypt_generic_deinit($cipher);
  
           return $this->pkcs5_unpad($cipherText);
        }
  
        mcrypt_module_close($cipher);
    }
  
    private function pkcs5_pad($text, $blocksize){
        $pad = $blocksize - (strlen ( $text ) % $blocksize);
        return $text . str_repeat ( chr ( $pad ), $pad );
    }
  
    private function pkcs5_unpad($str){
        $pad = ord($str[($len = strlen($str)) - 1]);
        return substr($str, 0, strlen($str) - $pad);
    }
}