Sprint
Erfahrenes Mitglied
Hallo zusammen,
ich muß einige mit mcrypt verschlüsselten Werte in einer DB speichern und hab dazu den BLOB Typ gewählt, damit auch wirklich alle Daten erhalten bleiben. Nun hat sich aber ein sehr merkwürdiges Verhalten gezeigt.
Zum Testen hab ich mal dieses kurze Script gebaut:
Dabei ist mir aufgefallen, daß die zu verschlüsselnden Werte relativ oft falsch abgelegt werden, da die Entschlüsselung nicht immer klappt.
So wird z.B. "qwertz" wieder richtig entschlüsselt, "yxcvbn" oder "poiuzt" hingegen nicht. Da kommt nur irgendwelcher Murks bei raus. Da die Entschlüsselung ohne das zwischenzeitliche Speichern in der DB aber immer funktioniert, kann es ja mMn nur an MySQL liegen.
Wie kann ich mir jetzt aber sicher sein, daß später die echten Daten wieder korrekt vorliegen, wenn sie gebraucht werden?
ich muß einige mit mcrypt verschlüsselten Werte in einer DB speichern und hab dazu den BLOB Typ gewählt, damit auch wirklich alle Daten erhalten bleiben. Nun hat sich aber ein sehr merkwürdiges Verhalten gezeigt.
Zum Testen hab ich mal dieses kurze Script gebaut:
PHP:
$wert = 'yxcvbn';
$schluessel = 'bjBRkV6Xzq3R0IcRCI+Fp12P6h7T5yAd';
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$enc_wert = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $schluessel, $wert, MCRYPT_MODE_ECB, $iv);
$sql = "update tabelle set mycrypt = '$enc_wert';";
$erg = mysql_query($sql, $verbindung);
$sql="select * from tabelle limit 1;";
$erg=mysql_query($sql,$verbindung); //Datanbankanfrage senden
$vkk = mysql_fetch_array($erg);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $schluessel, $vkk['mycrypt'], MCRYPT_MODE_ECB, $iv);
echo $decrypt;
Dabei ist mir aufgefallen, daß die zu verschlüsselnden Werte relativ oft falsch abgelegt werden, da die Entschlüsselung nicht immer klappt.
So wird z.B. "qwertz" wieder richtig entschlüsselt, "yxcvbn" oder "poiuzt" hingegen nicht. Da kommt nur irgendwelcher Murks bei raus. Da die Entschlüsselung ohne das zwischenzeitliche Speichern in der DB aber immer funktioniert, kann es ja mMn nur an MySQL liegen.
Wie kann ich mir jetzt aber sicher sein, daß später die echten Daten wieder korrekt vorliegen, wenn sie gebraucht werden?