mf_2
2008-09-18, 09:24:33
Hallo zusammen,
ich benutze die mcrypt Funktionen um eine Logdatei in einem PHP Script zu verschlüsslen.
Folgendes sind meine Funktionen zum ver- und entschlüsseln:
function log_crypt($sTextToAdd)
{
$sTextToAdd=time().";".$_SESSION['auth_rid'].";".$sTextToAdd."\n";
$key = "9u433q2i92438r9z";
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","rb");
$sEncLog=fread($file,filesize($_SERVER['DOCUMENT_ROOT']."/log.dat"));
fclose($file);
$sTextBeforeAdd=mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key,$sEncLog, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
$sTextToEnc=$sTextBeforeAdd.$sTextToAdd;
$sTextNewEnc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $sTextToEnc, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","wb");
$sEncLog=fwrite($file,$sTextNewEnc);
fclose($file);
unset($iv_size);
unset($iv);
unset($key);
unset($sEncLog);
unset($sTextToAdd);
unset($sTextBeforeAdd);
unset($sTextToEnc);
unset($sTextNewEnc);
}
function log_decrypt()
{
$key = "9u433q2i92438r9z";
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","rb");
$sEncLog=fread($file,filesize($_SERVER['DOCUMENT_ROOT']."/log.dat"));
fclose($file);
$sTextDecrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key,$sEncLog, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
return $sTextDecrypted;
}
Eine Logzeile sieht dann so aus:
Timestamp;Benutzername;Aktion
Leider wird nun bei der Entschlüsselung irgendwie ein Haufen Zeichensalat produziert und erst danach die Zeilen im Klartext ausgegeben, in etwa so:
c̯'ŠEÖûŠ ýÎ¥²§v#ç8Æìª#
epQ1221722288;mf_2;Anmeldung
1221722291;mf_2;Anmeldung
1221722295;mf_2;Anmeldung
1221722295;mf_2;Anmeldung
Woher kommt das?
Könnt ihr mir da weiterhelfen?
Ich bin leider noch recht unerfahren, was die Mcrypt Funktionen betrifft.
Gruß,
mf_2
EDIT: Ich habe statt fread() auch schon file_get_contents() und statt fwrite() file_put_contents() ausprobiert. Dabei hat sich bei der Ausgabe absolut nichts geändert. Ich habe es auch schon mal ohne IV versucht, kein Unterschied.
ich benutze die mcrypt Funktionen um eine Logdatei in einem PHP Script zu verschlüsslen.
Folgendes sind meine Funktionen zum ver- und entschlüsseln:
function log_crypt($sTextToAdd)
{
$sTextToAdd=time().";".$_SESSION['auth_rid'].";".$sTextToAdd."\n";
$key = "9u433q2i92438r9z";
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","rb");
$sEncLog=fread($file,filesize($_SERVER['DOCUMENT_ROOT']."/log.dat"));
fclose($file);
$sTextBeforeAdd=mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key,$sEncLog, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
$sTextToEnc=$sTextBeforeAdd.$sTextToAdd;
$sTextNewEnc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $sTextToEnc, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","wb");
$sEncLog=fwrite($file,$sTextNewEnc);
fclose($file);
unset($iv_size);
unset($iv);
unset($key);
unset($sEncLog);
unset($sTextToAdd);
unset($sTextBeforeAdd);
unset($sTextToEnc);
unset($sTextNewEnc);
}
function log_decrypt()
{
$key = "9u433q2i92438r9z";
$file=fopen($_SERVER['DOCUMENT_ROOT']."/log.dat","rb");
$sEncLog=fread($file,filesize($_SERVER['DOCUMENT_ROOT']."/log.dat"));
fclose($file);
$sTextDecrypted=mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key,$sEncLog, MCRYPT_MODE_ECB, "1567ijhfiejf9038rt0og4dse38765f2");
return $sTextDecrypted;
}
Eine Logzeile sieht dann so aus:
Timestamp;Benutzername;Aktion
Leider wird nun bei der Entschlüsselung irgendwie ein Haufen Zeichensalat produziert und erst danach die Zeilen im Klartext ausgegeben, in etwa so:
c̯'ŠEÖûŠ ýÎ¥²§v#ç8Æìª#
epQ1221722288;mf_2;Anmeldung
1221722291;mf_2;Anmeldung
1221722295;mf_2;Anmeldung
1221722295;mf_2;Anmeldung
Woher kommt das?
Könnt ihr mir da weiterhelfen?
Ich bin leider noch recht unerfahren, was die Mcrypt Funktionen betrifft.
Gruß,
mf_2
EDIT: Ich habe statt fread() auch schon file_get_contents() und statt fwrite() file_put_contents() ausprobiert. Dabei hat sich bei der Ausgabe absolut nichts geändert. Ich habe es auch schon mal ohne IV versucht, kein Unterschied.