PHP mcrypt有时工作,有时不完全随机

PHP mcrypt有时工作,有时不完全随机,php,encryption,mcrypt,Php,Encryption,Mcrypt,我在站点a上有一个加密文件(我们称之为:),在另一个站点上有另一个解密站点a加密信息的文件。第二个站点是站点B(我们称之为:) 站点A使用mcrypt对信息进行加密,将加密的信息发送到站点B(以及使用Base64编码后使用的IV),站点B对其进行解密,然后站点A获得解密结果并在屏幕上回显。除了回显解密结果外,它还回显mcrypt中使用的“iv”变量 我将在这里提供这两个文件的内容,但首先,我将解释这个问题 如果我坐在那里刷新站点A上的加密页面(在站点B解密后,它会回显解密结果),我会得到3种不同

我在站点a上有一个加密文件(我们称之为:),在另一个站点上有另一个解密站点a加密信息的文件。第二个站点是站点B(我们称之为:)

站点A使用mcrypt对信息进行加密,将加密的信息发送到站点B(以及使用Base64编码后使用的IV),站点B对其进行解密,然后站点A获得解密结果并在屏幕上回显。除了回显解密结果外,它还回显mcrypt中使用的“iv”变量

我将在这里提供这两个文件的内容,但首先,我将解释这个问题

如果我坐在那里刷新站点A上的加密页面(在站点B解密后,它会回显解密结果),我会得到3种不同的结果,完全随机

有时它工作得很好,我看到屏幕上回荡着正确的IV和正确的解密文本

然后其他时候,我看到屏幕上回荡着完全错误的IV,解密的文本仍然是加密的

然后其他时候,我会收到以下错误消息:IV参数必须与blocksize一样长

这完全是随机的…没有押韵或理由。以下是每个文件的源代码:

//Site A - http://SiteA.com/encrypt.php
<?php
$iv_size = "32";
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$secretkey = hash ("md5", "0yFzFSlTEb7vla5Kv3BHvKcBzX4tJBId5UKAaDDr");

$text = "something";

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $secretkey, $text, MCRYPT_MODE_CBC, $iv));
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secretkey, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv);
$base64iv = base64_encode($iv);

$result = file_get_contents("http://SiteB.com/decrypt.php?urliv=$base64iv&something=$encrypted");

echo $result;
?>
//站点A-http://SiteA.com/encrypt.php
然后第二个:

<?php
//Site B - http://SiteB.com/decrypt.php
$iv_size = "32";
$base64iv = $_GET['urliv'];
$something = $_GET['something'];
$iv = base64_decode($base64iv);
$secretkey = hash ("md5", "0yFzFSlTEb7vla5Kv3BHvKcBzX4tJBId5UKAaDDr");

$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $secretkey, base64_decode($something), MCRYPT_MODE_CBC, $iv);



echo "Decrypted Text " .  $decrypttext;
echo "<br><br>";
echo "IV Variable After Base64_Decode " . $iv;
?>


我真的可以坐在那里刷新网站的屏幕一个脚本,它只是工作/不工作/几乎工作,我不知道为什么。有什么想法吗?

您是否检查过每次都从sitebYes收到响应,它每次都会收到响应,否则我在屏幕上看不到任何东西(它使用的是文件获取内容(“此处的site B带有参数”)在SiteA上,
$decrypttext
等于
某物
?而SiteA上的
$iv
的值与siteB上的
$iv
的值相同?您对此有何回答?