MCRYPT_RIJNDAEL_256
không phải là AES-256. Đó là mật mã Rijndael với kích thước khối là 256 (do đó có lỗi). AES là một tập hợp con của mật mã Rijndael sử dụng kích thước khối 128 bit và khóa kích thước 128, 192 và 256 bit. Điều này cũng được phản ánh trong kích thước IV.
Để tạo bản mã được mã hóa AES-256, bạn có thể sử dụng MCRYPT_RIJNDAEL_128
với kích thước khóa chính xác (256 bit là 32 byte). _128
postfix cho biết kích thước khối sẽ được sử dụng; bạn vẫn có thể sử dụng nó với bất kỳ kích thước khóa hợp lệ nào là 128, 192 hoặc 256 bit.
Lưu ý rằng mcrypt - đặc biệt là thư viện C bên dưới - không được duy trì nữa. Tốt hơn hết bạn nên sử dụng thư viện mã hóa openssl hoặc mới hơn.
Các trình bao bọc mcrypt và OpenSSL cũng sẽ vui vẻ cho phép các kích thước khóa không hợp lệ, chỉ cảnh báo bạn - nếu bạn may mắn. Điều đó tất nhiên không tương thích với bất kỳ thư viện AES nào được xác định rõ ràng.