MCRYPT_RIJNDAEL_256
ist nicht AES-256. Es ist die Rijndael-Chiffre mit einer Blockgröße von 256 (daher der Fehler). AES ist eine Teilmenge der Rijndael-Chiffre, die eine Blockgröße von 128 Bit und einen Schlüssel verwendet Größen von 128, 192 und 256 Bit. Dies spiegelt sich auch in der IV-Größe wieder.
Um einen AES-256-verschlüsselten Chiffretext zu erstellen, können Sie MCRYPT_RIJNDAEL_128
verwenden mit der richtigen Schlüsselgröße (256 Bit sind 32 Byte). Der _128
Postfix gibt die zu verwendende Blockgröße an; Sie können es weiterhin mit jeder gültigen Schlüsselgröße von 128, 192 oder 256 Bit verwenden.
Beachten Sie, dass mcrypt - insbesondere die zugrunde liegende C-Bibliothek - nicht mehr gepflegt wird. Verwenden Sie besser die openssl- oder neuere Kryptobibliotheken.
Die mcrypt- und OpenSSL-Wrapper lassen auch gerne ungültige Schlüsselgrößen zu und warnen Sie nur – wenn Sie Glück haben. Das ist natürlich nicht mit irgendeiner wohldefinierten AES-Bibliothek kompatibel.