Mit folgendem Code ver- bzw. entschlüssel ich private Nachrichten in meinem Forum:
- Code: Select all
if ( $encrypt )
{
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";
$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 . "')";
}
else
{
$sql = "INSERT INTO " . PRIVMSGS_TEXT_TABLE . " (privmsgs_text_id, privmsgs_bbcode_uid, privmsgs_text)
VALUES ($privmsg_sent_id, '" . $bbcode_uid . "', '" . str_replace("\'", "''", $privmsg_message) . "')";
}
- Code: Select all
if ( $decrypt )
{
if ( ! empty($encryption_key) )
{
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);
}
else if ( empty($encryption_key) )
{
$error = TRUE;
$error_msg .= ( ( !empty($error_msg) ) ? '<br />' : '' ) . $lang['Empty_decryption_key'];
$template->set_filenames(array(
'reg_header' => 'error_body.tpl')
);
$template->assign_vars(array(
'ERROR_MESSAGE' => $error_msg)
);
$template->assign_var_from_handle('ERROR_BOX', 'reg_header');
}
}
Das klappt fast perfekt, denn seltsamerweise werden immer die ersten 27 Zeichen einer Nachricht nicht mehr korrekt entschlüsselt.
Was kann dafür die Ursache sein?
Bye