MCRYPT_RIJNDAEL_256
不是AES-256。这是Rijndael密码,其块大小为256(因此出现错误)。AES是Rijndael密码的子集,使用128位的块大小和128、192和256位的 大小。这也反映在IV大小上。
要创建AES-256加密密文,可以使用MCRYPT_RIJNDAEL_128
正确的密钥大小(256位为32字节)。的_128
后缀指示要使用的块大小; 您仍然可以将其与128、192或256位的任何有效密钥大小一起使用。
请注意,不再维护mcrypt-尤其是基础C库。您最好使用openssl或更高版本的加密库。
mcrypt和OpenSSL包装器也将愉快地允许使用无效的密钥大小,仅在警告您时(如果您很幸运)。当然,这与任何定义良好的AES库都不兼容。