Apache Friends Support Forum

It is currently 21. November 2009 01:24

All times are UTC + 1 hour




Post new topic Reply to topic  [ 5 posts ] 
Author Message
 Post subject: PHP mcrypt in der Version 1.1 mit Problemen (vorab Info)
PostPosted: 29. October 2003 16:42 
Offline
Apache Friends
User avatar

Joined: 24. January 2003 14:03
Posts: 175
Location: Berlin
Dieser Thread dient der Information. Die mcrypt Extension soll über verschiedene Verschlüsselungsalgorithmen plus selbst definierten Schlüsseln (Keys) das Verschlüsseln und Entschlüsseln eines beliebigen Textes erlauben, anders als z.B. crypt(). Um mcrypt im xampp 1.1 zu aktivieren, muss die Extension in der "php.ini" (/xampp/apache/bin/php.ini) erst geladen werden (Semikolon entfernen, danach Neustart Apache).

Problem: Das Verschlüsseln und Entschlüsseln innerhalb ein und desselben Skriptes ist soweit problemlos. Schwierig wird es, wenn man eine Datei benutzt, die temporär den verschlüsselten Text enthält (z.B. eine Session mit einem verschlüsselten Passwort), der irgendwann bei Bedarf wieder entschlüsselt werden soll. Hier traten zwei Bugs (?) auf:

1) Die Warnung: "Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize ..." ist nicht verständlich. Siehe dazu auch:
http://www.zend.com/lists/php-dev/200304/msg00491.html
2) Die Ergebnisse des Ver- und Entschlüsseln sind nicht "stabil". Nach ca. einem dutzend korrekter Ergebnisse gab es dann auch Aussetzer.

Aber vielleicht habe ich auch ein Fehler gemacht. Mein PHP Testscript als txt => http://www.apachefriends.org/winxampp/mcrypttest.txt. Vgl. hierzu auch http://de2.php.net/manual/de/ref.mcrypt.php.

Quote:
<?php

//// EXAMPLE 1. ////
//// So geht noch alles gut (so it's ok for all in one) ///////////

$key="My Key";
$text="My plain text";

// Verschlüsseln (Enrypt)
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
// Entschlüsseln (Decrypt)
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo "EXAMPLE 1:<br><br>Key: $key<br>Text: $text<br>Encrypt: $crypttext<bR>Decrypt: $decrypttext";


//// EXAMPLE 2. with write and get the crypt text in a binary file ////
//// Hier gibt es dann Probleme ... (with problems ...) ///////////

$otherkey="Another Key";
$othertext="Another plain text";
$filename = "crypt.bin";

// Enrypten ...
$otheriv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$otheriv = mcrypt_create_iv($otheriv_size, MCRYPT_RAND);
$othercrypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $otherkey, $othertext, MCRYPT_MODE_ECB, $otheriv);
// In Datei schreiben (binär)
$print="$otheriv\r\n$othercrypttext";
echo "<bR><br><br>EXAMPLE 2:<br><br>Key: $otherkey<br>Text: $othertext<bR>File zum Speichern: $filename<br><br>Schreibe in Datei<br>=> neuen iv: $otheriv<br>=> den verschlüsselten Test: $othercrypttext";
$new_print = fopen($filename,"wb+");
fwrite($new_print,$print);
fclose($new_print);
// Aus der Datei lesen
$datei = fopen($filename,"rb");
$i=0;
while(!feof($datei))
{
// $zeile = fread($datei,filesize($filename));
$zeile = fgets($datei,255);
$cryptzeile[]=$zeile;
$i+=1;
}
fclose($datei);
// Decrypten ...
echo "<br><br>Habe nun aus Datei gelesen: <br>=> neuen iv: $cryptzeile[0]<br>=> den verschlüsselten Test: $cryptzeile[1]";
$otherdecrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $otherkey, $cryptzeile[1], MCRYPT_MODE_ECB, $cryptzeile[0]);
echo "<br>Habe nun alles dechriffiert:<br>Orignaler Text: $othertext<br>Chiffrierter Text aus Datei: $cryptzeile[1] <br>Dechiffrierter Text aus Datei: $otherdecrypttext";

//// FAZIT /////////////////
echo "<br><br><br>FAZIT:<bR><br>
<UL>
<LI>\"Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize ...\" ist anscheindend ein Bug für PHP 4 und mcrypt(). Vgl. bitte ZEND Bug Report: <A HREF=\"http://www.zend.com/lists/php-dev/200304/msg00491.html\">
http://www.zend.com/lists/php-dev/200304/msg00491.html</A></LI>
<LI>Das encrypt in und decrypt aus einer Datei ist instabil, da ab und zu unverständlich plötzlich (!!!) die Decodierung nicht mehr funktioniert. Öfter mal die Seite aktualisieren, dann kommt ihr bestimmt auch mal in diesen zweifelhaften Genuß.</li>
</UL>
<B>Eigentlich schade!</B> (Kay Vogelgesang)";
?>

_________________
Kay Vogelgesang
kvo@apachefriends.org
www.apachefriends.org


Top
 Profile  
 
 Post subject:
PostPosted: 29. October 2003 16:56 
Offline
AF-Moderator
User avatar

Joined: 03. January 2003 12:08
Posts: 2955
Location: Diedorf
Hi Kay,

wäre sowas nichts für die XAMPP FAQ?
Könntest evtl. auch noch mal eintragen, weil im Forum geht sowas schnell unter :)

URL zur FAQ siehe meine Sig. :)

So long
KriS. der jetzt um 17:10 schon ins Bett hüpft weil er am ende is!

_________________
http://addons.xampp.org
XAMPP FAQ: http://faq.kwm-web.info
Top VServer und RootDS: www.simplyroot.de


Top
 Profile  
 
 Post subject:
PostPosted: 29. October 2003 22:06 
Offline
Apache Friends
User avatar

Joined: 24. January 2003 14:03
Posts: 175
Location: Berlin
Oh ja, KriS! Die FAQs. Aber es kommt bald sowie so noch mehr und dann ... :wink:

_________________
Kay Vogelgesang
kvo@apachefriends.org
www.apachefriends.org


Top
 Profile  
 
 Post subject:
PostPosted: 30. November 2005 20:43 
Offline

Joined: 29. November 2005 16:42
Posts: 1
1) Die Warnung: "Warning: mcrypt_decrypt(): The IV parameter must be as long as the blocksize ..." ist nicht verständlich. Siehe dazu auch:
http://www.zend.com/lists/php-dev/200304/msg00491.html

Antwort: Der IV muss genau 32 Zeichen lang sein. Den kann man auch selbst definieren oder mit PHP-Befehl md5 generieren.
Beispiel $iv = md5("XAMPP ist das beste, dass ich kenne!!!!!");

2) Die Ergebnisse des Ver- und Entschlüsseln sind nicht "stabil". Nach ca. einem dutzend korrekter Ergebnisse gab es dann auch Aussetzer.

Aber vielleicht habe ich auch ein Fehler gemacht. Mein PHP Testscript als txt => http://www.apachefriends.org/winxampp/mcrypttest.txt. Vgl. hierzu auch http://de2.php.net/manual/de/ref.mcrypt.php.

Antwort: PHP behandelt Variablen beim speichern als Text, genau so wie eMails. Dieses Problem habe ich mit base64 gelöst.
Mit
$textzumspeichern = base64_encode($verschluesseltertext);
wird der verschluesselte Text Speicherkonform umgewandelt.

Mit
$readfile = file_get_contents("gespeicherterverschluesseltertext.txt");
$verschluesseltedaten = base64_decode($readfile);
kann man die gespeicherten Daten wieder in den verschlüsselten Urzustand zurückbringen.

Gruß
Marder


Top
 Profile  
 
 Post subject: Re: PHP mcrypt in der Version 1.1 mit Problemen (vorab Info)
PostPosted: 04. June 2009 02:14 
Offline

Joined: 04. June 2009 02:10
Posts: 1
simulation credit auto

Vielen Dank für die Informationen :D


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 5 posts ] 

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group