PHP加密/解密来自文本文件

时间:2012-04-29 04:21:06

标签: php encryption

这真让我难过......

我正在使用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>";

而答案是错误的。

我已经验证两个版本中使用的密钥和数组是相同的(即重构的非序列化数组包含与序列化之前相同的值),当我写入文件时,翻译中是否会丢失某些东西?

我应该开始考虑调试这个想法吗?

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

1 个答案:

答案 0 :(得分:2)

fwrite()删除换行符。即,不要这样做:

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

\n会搞砸加密/解密程序。

这应该足够了:

fwrite($fh, $keyCode);