Hallo Forum,
ich verwende die mcrypt-Extension (Version 2.5.6), um Cookies zu verschlüsseln.
Als Cypher benutze ich "blowfish" und als Mode "cfb".
Auf meinem lokalen Testserver (XAMPP) hat noch alles wunderbar funktioniert. Ich habe mir dann vor kurzem bei all-inkl.com einen Testaccount angelegt. Leider treten dort vereinzelte Probleme mit dem Auslesen der verschlüsselten Cookies auf, die nicht reproduzierbar sind. Die Cookies werden manchmal überhaupt nicht ausgelesen. Die mcrypt-Version ist auf beiden Servern die gleiche. Auch die PHP-Versionen sind identisch.
Den Quellcode der Encryption-Klasse haben ich dem Buch Professionelle PHP 5-Programmierung von George Schlossnagle unverändert entnommen.
Hier für alle Fälle die Ausgabe von phpinfo() des all-inkl-Testaccounts
Ich kann mir absolut nicht erklären warum diese Fehler auftreten. Der all-inkl-Support ist zwar sehr gut, bei diesem Problem konnte mir jedoch nicht geholfen werden. Könnt Ihr es vielleicht?
ich verwende die mcrypt-Extension (Version 2.5.6), um Cookies zu verschlüsseln.
Als Cypher benutze ich "blowfish" und als Mode "cfb".
Auf meinem lokalen Testserver (XAMPP) hat noch alles wunderbar funktioniert. Ich habe mir dann vor kurzem bei all-inkl.com einen Testaccount angelegt. Leider treten dort vereinzelte Probleme mit dem Auslesen der verschlüsselten Cookies auf, die nicht reproduzierbar sind. Die Cookies werden manchmal überhaupt nicht ausgelesen. Die mcrypt-Version ist auf beiden Servern die gleiche. Auch die PHP-Versionen sind identisch.
Den Quellcode der Encryption-Klasse haben ich dem Buch Professionelle PHP 5-Programmierung von George Schlossnagle unverändert entnommen.
PHP-Code:
class Encryption
{
private static $cypher = 'blowfish';
private static $mode = 'cfb';
private static $key = 'secret';
public function encrypt($plaintext)
{
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, self::$key, $iv);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
return $iv.$crypttext;
}
public function decrypt($crypttext)
{
$td = mcrypt_module_open(self::$cypher, '', self::$mode, '');
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($crypttext, 0, $iv_size);
$crypttext = substr($crypttext, $iv_size);
$plaintext = "";
if($iv) {
mcrypt_generic_init($td, self::$key, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
mcrypt_generic_deinit($td);
}
return $plaintext;
}
}
Ich kann mir absolut nicht erklären warum diese Fehler auftreten. Der all-inkl-Support ist zwar sehr gut, bei diesem Problem konnte mir jedoch nicht geholfen werden. Könnt Ihr es vielleicht?
Kommentar