PHP 河豚使用数据库加密/解密



我在stackoverflow上发现了一个加密/解密代码。就是这个:

public function decrypt_blowfish($data,$key){
    try{
        $iv     =   pack("H*" , substr($data,0,16));
        $x      =   pack("H*" , substr($data,16)); 
        $res    =   mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $x , MCRYPT_MODE_CBC, $iv);
        return $res;
    }catch(Exception $ex){
        echo $ex->getMessage();
    }
}
function encrypt_blowfish($data,$key){
    try{
        $iv_size    =   mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_CBC);
        $iv         =   mcrypt_create_iv($iv_size, MCRYPT_RAND);
        $crypttext  =   mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $data, MCRYPT_MODE_CBC, $iv);
        return bin2hex($iv . $crypttext);
    }catch(Exception $ex){
        echo $ex->getMessage();
    }
}

如果我只使用数据库中没有值的 PHP 对其进行测试,它可以正常工作,但是如果我将其与数据库中的值一起使用,我会得到"Manuel"之类的东西,而不仅仅是"Manuel" - 你能告诉我我的错误是什么吗?

尝试编码

为64位并加密字符串,并在解密后对其进行解码。 它会工作...

$newDataToEncrypt=base64_encode($data);

在获得解密文本后

 $data=base64_decode($decryptData);

试试吧

最新更新