MCRYPT_RIJNDAEL_256
nie jest AES-256. Jest to szyfr Rijndaela o rozmiarze bloku 256 (stąd błąd). AES jest podzbiorem szyfru Rijndaela używającego rozmiaru bloku 128 bitów i klucza rozmiary 128, 192 i 256 bitów. Znajduje to również odzwierciedlenie w rozmiarze IV.
Aby utworzyć zaszyfrowany tekst AES-256, możesz użyć MCRYPT_RIJNDAEL_128
z prawidłowym rozmiarem klucza (256 bitów to 32 bajty). _128
przyrostek wskazuje rozmiar bloku, który ma być użyty; nadal możesz go używać z dowolnym prawidłowym rozmiarem klucza 128, 192 lub 256 bitów.
Uważaj, że mcrypt - zwłaszcza podstawowa biblioteka C - nie jest już utrzymywany. Lepiej jest korzystać z bibliotek openssl lub nowszych kryptowalut.
Opakowania mcrypt i OpenSSL również z radością dopuszczą nieprawidłowe rozmiary kluczy, ostrzegając Cię tylko - jeśli masz szczęście. To oczywiście nie jest kompatybilne z żadną dobrze zdefiniowaną biblioteką AES.