【发布时间】:2026-01-26 17:15:01
【问题描述】:
我在 * 上找到了一个加密/解密代码。 就是这个:
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”之类的东西 - 你能告诉我我的错误是什么?
【问题讨论】:
-
这可能是一个编码问题 - *.com/questions/279170/utf-8-all-the-way-through 很可能是您找到解决方案的地方,也可能是一个骗局
-
不要试图变得粗鲁,错误是您正在从该站点获取随机代码。
mcrypt是废弃软件。 github上有很多PHP正确加密/解密实现的例子。考虑擦除此代码并将其替换为this one。 -
请注意,即使是 Blowfish 的作者现在也使用 AES。
-
谢谢大家,我会尝试 AES 而不是河豚
标签: php encryption blowfish