Fehler in function.pack -> Type H: illegal hex digit
Verfasst: 17.09.2008 11:46
Moin! 
Ich muss mal wieder die netten PHP Genies mit einer Frage "nerven".
Ich biete in meinem Forum u.a. die Verschlüsselung der PNs an (Private Message Encryption and Decryption). Das funktioniert bis auf zwei Unschönheiten auch bestens. Eine dieser Unschönheiten betrifft diese Fehlermeldung, wenn beim entschlüsseln vergessen wird das PW einzugeben:
in diesem Stück Code:
Nun könnte ich diese PHP Warnung zwar durch ein hinzufügen von @ in der betreffenden Zeile ausblenden:
aber das löst das eigentliche Problem ja nicht. Wenn ich das ganze richtig verstehe, gibt es diese Warnung deswegen, weil keine Hex-Zeichenkette zur weiteren Verarbeitung angegeben wurde. Das leuchtet mir ein. Nur wie müsste das ganze aussehen, damit dieser Fehler abgefangen und eine entsprechende Fehlermeldung ausgegeben wird?
Bye

Ich muss mal wieder die netten PHP Genies mit einer Frage "nerven".

Ich biete in meinem Forum u.a. die Verschlüsselung der PNs an (Private Message Encryption and Decryption). Das funktioniert bis auf zwei Unschönheiten auch bestens. Eine dieser Unschönheiten betrifft diese Fehlermeldung, wenn beim entschlüsseln vergessen wird das PW einzugeben:
Das betrifft die Zeile:PHP Warning: pack(): Type H: illegal hex digit y in ...\privmsg.php on line 690
Code: Alles auswählen
$decrypted_message = trim(mcrypt_decrypt($cipher_alg, $encryption_key, pack("H*", $decrypted_message), MCRYPT_MODE_CFB, "$iv"));
Code: Alles auswählen
if ( $decrypt )
{
srand((double) microtime() * 1000000);
$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
$decrypted_message = trim(mcrypt_decrypt($cipher_alg, $encryption_key, @pack("H*", $decrypted_message), MCRYPT_MODE_CFB, "$iv"));
Bye