mcrypt
Windows 7 でフラット ファイルの値を暗号化および復号化するためにPHP を使用しています。
他の情報なしで値を直接書き込み、ファイルから復号化すると、アルゴリズムは正常に機能します。キーと値のペア ( password=xxxxxx
)としてエンコードexplode()
し、「=」記号でペアを解析しようとすると、復号化関数は入力されたもの以外のものを返します。
私はtrim()
空白を切り取るために使用しており(EOL文字が含まれている可能性があるようです)、キーと値を手動で解析しようとしました。
何も機能していないようです。他の誰かがこの問題を見たことがありますか? もしそうなら、どのようにそれを乗り越えましたか?
コードの暗号化/復号化:
function encrypt ($strToEncrypt) {
global $td, $iv, $key;
/* Intialize encryption */
mcrypt_generic_init($td, $key, $iv);
/* Encrypt data */
$encrypted = mcrypt_generic($td,$strToEncrypt);
echo "encrypted = " . $encrypted . "<BR>";
return $encrypted;
}
function decrypt($strToDecrypt) {
global $td, $iv, $key;
/* Initialize encryption */
mcrypt_generic_init($td, $key, $iv);
/* Decrypt data */
$decrypted = mdecrypt_generic($td, $strToDecrypt);
return $decrypted;
}
?>
ファイル操作コード:
include 'libEncryption.php';
$tempStr ="";
$tempStr2="";
try {
$nextPage = $_REQUEST["NEXTPAGE"];
switch ($nextPage)
{
case "ENCRYPT":
echo 'String to encrypt = ' . $_POST["txtSeedStr"] ."<BR>";
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$file = fopen("C:\\temp\\EncryptTest.txt", "wb") or exit("Unable to open file!");
} else {
$file = fopen("//home/prem03/EncryptTest.txt", "w") or exit("Unable to open file!");
}
fwrite($file, "username=web_app\npassword=");
$tempStr = encrypt($_POST["txtSeedStr"]);
fwrite($file, $tempStr, strlen($tempStr));
fwrite($file, "\n");
fwrite($file, "DBNAME=DEV11");
fclose($file);
break;
case "DECRYPT":
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$file = fopen("C:\\temp\\EncryptTest.txt", "rb") or exit("Unable to open file!");
} else {
$file = fopen("//home/prem03/EncryptTest.txt", "r") or exit("Unable to open file!");
}
if ($file) {
while (!feof($file)) {
$str1=fgets($file);
echo "str1 = " . $str1 . "<br>";
list($key,$value) = explode("=",$str1);
$var1=strlen(trim($value));
echo "key = ".$key.' value = '.trim($value) . ' ' . $var1 . "<br />";
if ($key == "password") {
$var2 = trim($value);
$tempStr2 = decrypt($var2);
echo 'tempStr2 = ' . $tempStr2 . "<BR>";
}
}
}
fclose($file);
break;
default:
break;
}
} catch (Exception $ex) {
echo $ex->getMessage();
}
?>