2

这真的把我难住了......

我正在使用 PHP 进行加密。

使用内存,一切都很好....

//encrypt the sensitive data
$encryptedData = encrypt($senstiveData, $theKey);

//decrypt the data
$decryptedData = decrypt($encryptedData, $theKey);

//print decrypted string
echo "<br>Decrypted String:" . $decryptedData;

即解密的字符串:包含正确的值。

但是,如果我将信息写入文件......它会中断。

$orderFile = "orders.dat";
$fh = fopen($orderFile, 'a') or die("can't open file");
fwrite($fh, $keyCode . "\n");
$serializedArray = serialize($encryptedData); 
fwrite($fh, $serializedArray . "\n");
fclose($fh);

$file = fopen("orders.dat","r");

//key is first line in 'orders.dat'
$theKey = fgets($file);

//serialised array is second line...
$unserializedArray = unserialize(fgets($file));

$decryptedData2 = decrypt($unserializedArray, $theKey);

//print decrypted string
echo "<br>Decrypted String:" . $decryptedData2 . "<br>";

而且……答案不正确。

我已经验证了两个版本中使用的键和数组是相同的(即重建的未序列化数组包含与序列化之前相同的值),当我写入文件时可能会丢失一些东西吗?

我应该开始寻找调试的任何想法?

任何建议将不胜感激,米奇。

4

1 回答 1

3

从您的fwrite(). 即,不要这样做:

fwrite($fh, $keyCode . "\n");

\n可以搞砸加密/解密程序。

这应该足够了:

fwrite($fh, $keyCode);
于 2012-04-29T04:55:12.680 回答