Seit einigen Wochen suche ich zu folgendem Problem erfolglos eine Lösung.
Ich habe den "Private Message Encryption and Decryption" Mod im Einsatz, welcher nach diversen Fehlerkorrekturen nun auch fast perfekt funktioniert.
Nach der Umstellung von PHP 5.2.0 auf 5.2.3 funktioniert er jedoch nicht mehr. Alte unter PHP 5.2.0 verschlüsselte PNs werden nur unvollständig entschlüsselt und neue PNs werden zwar ver- aber nicht mehr entschlüsselt. Es gibt aber auch keinerlei Fehlermeldung.
Im PHP ChangLog zur Version 5.2.2 habe ich dieses gefunden:
bzw. zur Version 5.2.1Fixed bug #40999 (mcrypt_create_iv() not using random seed).
dies
Allerdings werde ich nicht so recht schlau daraus.Fixed bug #35496 (Crash in mcrypt_generic()/mdecrypt_generic() without proper init).
Frage an die hiesigen Profis:
Wie muss folgender Code geändert werden?
Code: Alles auswählen
if ( $decrypt )
{
$cipher_alg = MCRYPT_RIJNDAEL_256;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$decrypted_message = str_replace("<b>Um diese verschlüsselte Nachricht zu lesen, gebe das Passwort unten rechts ein und klicke dann auf den Button \"Nachricht entschlüsseln\":</b>\n\n", "", $private_message);
$decrypted_message = str_replace("<br />", "", $decrypted_message);
$decrypted_message = trim(mcrypt_decrypt($cipher_alg, $encryption_key, pack("H*", $decrypted_message), MCRYPT_MODE_CFB, "$iv"));
$decrypted_message = stripslashes($decrypted_message);
$private_message = str_replace("\r\n", "<br />", $decrypted_message);
$decrypted_message = str_replace("\"", """, $decrypted_message);
$decrypted_message = stripslashes($decrypted_message);
}Code: Alles auswählen
if ($encrypt)
{
$cipher_alg = MCRYPT_RIJNDAEL_256;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "This is a very secret key";
$encrypted_message = str_replace("\\\"", "\"", $privmsg_message);
$encrypted_message = str_replace("\\'", "'", $encrypted_message);
$encrypted_message = str_replace("\\\\", "\\", $encrypted_message);
$encrypted_message = bin2hex(mcrypt_encrypt($cipher_alg, $encryption_key, $encrypted_message, MCRYPT_MODE_CFB, "$iv"));
$encrypted_message = wordwrap($encrypted_message, 80, "<br />", 1);
$encrypted_message = "<b>Um diese verschlüsselte Nachricht zu lesen, gebe das Passwort unten rechts ein und klicke dann auf den Button \"Nachricht entschlüsseln\":</b>\n\n" . $encrypted_message;
$sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_bbcode_uid, privmsgs_text)
VALUES ($privmsg_sent_id, '" . $bbcode_uid . "', '" . $encrypted_message . "')";
}