Bleibt aber das "Problem" mit der Dateigröße. Ist das schlimm oder ist das einfach nur "Datenmüll" zum Auffüllen auf die richtige Größe?
Ja. Deshalb bin ich mir gar nicht sicher, ob das binär-sicher ist. Bei mcrypt habe ich der Doku nichts gefunden.
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
Bekommt man das irgendwie weg?
Trimmen, Konkret rtrim(string, chr(0) wenn davon keine Nachteile zu erwarten sind:
$decrypttext = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv), chr(0));
Die etwas sichere Methode könnte es sein, wenn die Anzahl der Bytes der unverschlüsselten Daten bekannt ist, auf diese zu kürzen, hierbei wieder darauf achten "Text ist kein Binärkram" - Ich würde den in Text umwandeln.
$text = base64_encode(file_get_contents('test.jpg'));
$text_length=strlen($text);
#...
$decrypt_text = substr(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv), 0, $text_length);
$decrypt_bin=base64_decode($decrypttext);
.... Das sollte dann auch binär-sicher sein.
Freilich geht dann auch:
$text = base64_encode(file_get_contents('test.jpg'));
$crypt_text=mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
#...
$decrypt_bin = base64_decode(ltrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv), 0, $text_length),chr(0));