如何在php中使用Blowfish算法解密?
我应该写一个PHP脚本来解密Blowfish加密数据。
我收到的用于解密的数据由另一个应用程序加密(我无法访问它)。
当使用javascript脚本(blowfish.js)检查数据时,数据解密正常。
如何在php中解密数据?
我在PHP中尝试过
mcrypt
函数。如果我使用相同的代码加密和解密,代码工作正常。如果我解密加密代码(在另一个应用程序中)它会给垃圾邮件。
不知道要设置什么模式。
任何人都可以建议下面的代码或任何PHP BlowFish代码,而不使用mcrypt?
<?php
class Encryption
{
static $cypher = 'blowfish';
static $mode = 'cfb';
static $key = '12345678';
public function encrypt($plaintext)
{
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, self::$key, $iv);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
return $iv.$crypttext;
}
public function decrypt($crypttext)
{
$plaintext = "";
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$ivsize = mcrypt_enc_get_iv_size($td);
$iv = substr($crypttext, 0, $ivsize);
$crypttext = substr($crypttext, $ivsize);
if ($iv)
{
mcrypt_generic_init($td, self::$key, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
}
return $plaintext;
}
}
$encrypted_text = Encryption::encrypt('this text is unencrypted');
echo "ENCRY=".$encrypted_text;echo "<br/>";
////I am using this part(decryption) coz data already encryption
// Encrypted text from app
$encrypted_text = '29636E7ADA7081E7F5D73121C45E20D5';
// Decrypt text
$decrypted_text = Encryption::decrypt($encrypted_text);
echo "ENCRY=".$decrypted_text;echo "<br/>";
?>
没有找到相关结果
已邀请:
3 个回复
荆怖赡
必须与加密数据时使用的初始化向量相同。您自己的函数通过将IV添加到密文(
)来传输此信息,但另一个应用程序可能不会这样做。 您需要找出其他应用程序使用的IV,并将其传递给您自己的代码。由于
函数从密文的开头读取IV,因此您可以简单地添加它。 此外,您可以通过使用
函数和其他应用程序加密相同的文本来测试一下。如果输出的长度不同(您自己的长度较大),那么应用程序不会在密文中包含IV,您必须以其他方式获取此信息。 当然,在您的代码和其他应用程序之间使用的密码模式(CFB)必须相同。
佩疵瓦
薄扩络拜