当前位置 : 主页 > 网络编程 > PHP >

PHP blowfish(CBC) 加密解密函数

来源:互联网 收集:自由互联 发布时间:2021-06-30
1. [代码] [PHP]代码 ?php/** * php blowfish 算法 * Class blowfish */class blowfish{ //keyprivate $key256 = '1234567890123456ABCDEFGHIJKLMNOP';private $key128 = '1234567890123456'; //向量 public $iv = 0;function __construct(){$this-iv

1. [代码][PHP]代码    

<?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);
    }
}
网友评论