我在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);
试试吧