ウェブアプリケーションを作成していて、いくつかの用途で文字列を暗号化してから解読する必要があり、コードからのすべてがMacBookのlocalhost 10.11.4とXAMPP 5.6.15-1しかし、私はサーバー上でコードをアップロードするとき、それはちょうどうまく動作しません。 1つの問題が見つかりました(複数のサーバーで試しました)。サーバ上でPHP暗号化が機能しない "mcrypt_get_iv_size"関数
だから、これは私のコードです:
<?php
session_start();
header("Content-Type: text/html;charset=UTF-8");
if (isset($_POST["file"])) {
$filename = $_POST["file"];
//$filename = $_GET["file"];
$filename = substr($filename, 12);
$username = $_SESSION["username"];
$key = $_SESSION["key"];
$filename = "../users/$username/text/" . $filename;
$fileNumber = $_POST["number"];
///Cloude/users/antonio/text/teext/file2.txt
// Cloude/script
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
echo $contents;
$decrypt = str_replace(" ", "+", $contents);
echo " ------ 1 ------ ";
$decrypt = explode('|', $decrypt.'|');
$decoded = base64_decode($decrypt[0]);
$iv = base64_decode($decrypt[1]);
echo " ------ 2 ------";
if(strlen($iv)!==mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)){ return false; }
echo " ------ 3 ------";
$key = pack('H*', $key);
$decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_CBC, $iv));
$mac = substr($decrypted, -64);
$decrypted = substr($decrypted, 0, -64);
$calcmac = hash_hmac('sha256', $decrypted, substr(bin2hex($key), -32));
if($calcmac!==$mac){ return false; }
$decrypted = unserialize($decrypted);
echo json_encode($decrypted . "qJB0rGtIn5UB1xG03efyCp55");
}
と、このエコーはちょうどラインが動作しませんテストのためです。だから私はそれをすべて実行しようとすると、それは単に "------ 1 ------と------ 2 ------"をコードし、
の後のコードmcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)
ちょうどサーバで動作しませんが、誰もがなぜ知っていますか?
編集:私はバグを発見した、それはホスティングの問題だった、彼らは奇妙なことをやって、とにかくおかげで!
エラーチェックで*何?* –
ありがとうございます。問題は、私が000webhost.comで無料ホスティングを使用していたことでした。彼らは解析を追跡するスクリプトを.htmlファイルに追加しました。ファイルを読むときにそのスクリプトコードを削除してください、とにかく、ありがとうとにかく –
それが解決されたことを嬉しく思います。 –