PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Kann nicht mit pgcrypto von AES-256-CBC entschlüsseln, aber AES-128-CBC ist in Ordnung

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.