mcrypt: die ersten 27 Zeichen werden nicht entschlüsselt?

Alles, was PHP betrifft, kann hier besprochen werden.

mcrypt: die ersten 27 Zeichen werden nicht entschlüsselt?

Postby Dungeonwatcher » 04. June 2009 11:04

Hi große Meister! 8)

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&uuml;sselte Nachricht zu lesen, gebe das Passwort unten rechts ein und klicke dann auf den Button \"Nachricht entschl&uuml;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&uuml;sselte Nachricht zu lesen, gebe das Passwort unten rechts ein und klicke dann auf den Button \"Nachricht entschl&uuml;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("\"", "&#34;", $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
User avatar
Dungeonwatcher
 
Posts: 94
Joined: 15. August 2007 02:53
Operating System: XP

Return to PHP

Who is online

Users browsing this forum: No registered users and 34 guests