gpt4 book ai didi

php - 如何在php中使用Blowfish算法解密?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:29 24 4
gpt4 key购买 nike

我应该编写一个 PHP 脚本来解密 Blowfish 加密数据。

我收到的用于解密的数据由另一个应用程序加密(我无权访问它)。

当我使用 javascript 脚本 (blowfish.js) 检查数据时,数据解密正常。

如何在 php 中解密数据?

我试过 PHP 中的 mcrypt 函数。如果我使用相同的代码加密和解密,代码就可以正常工作。如果我解密加密代码(在另一个应用程序中),它会产生垃圾。

不知道要设置什么模式。

任何人都可以在不使用 mcrypt 的情况下建议下面的代码或任何 PHP BlowFish 代码吗?

<?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/>";

?>

最佳答案

解密时使用的$iv必须与Initialization Vector相同 在加密数据时使用。您自己的函数通过在密文前加上 IV 来传输此信息(return $iv.$crypttext;),但其他应用程序可能不会这样做。

您需要找出其他应用使用的 IV,并将其传递给您自己的代码。由于 decrypt 函数从密文的开头读取 IV,您可以简单地将其添加到前面。

此外,您可以通过使用 encrypt 函数和其他应用程序加密相同的文本来进行一些测试。如果输出的长度不同(您自己的长度更大),则应用不会在密文中包含 IV,您必须以其他方式获取此信息。

当然,您的代码和其他应用程序使用的密码模式 (CFB) 必须相同。

关于php - 如何在php中使用Blowfish算法解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5580960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com