use*_*704 0 php encryption cryptography aes mcrypt
我对使用php的mcrypt的AES-128和AES-512的区别感到困惑.差异只是密钥的长度(32和64个字符)或差异是使用的算法,如MCRYPT_RIJNDAEL_128?如果差异是后者,那么AES-512的算法应该如何呢?
首先,没有AES-512.使用密钥长度128,192和256指定AES.接下来,请注意不要将Rijndael与AES混合!AES 基于 Rijndael,但后者也提供块长度的选择.这个块长度使用常量是在PHP多变MCRYPT_RIJNDAEL_128,MCRYPT_RIJNDAEL_192,MCRYPT_RIJNDAEL_256.
最后,请避免使用mcrypt.有更好的选择,即openssl:
如果您在2015年编写代码来加密/加密数据,则应使用openssl_encrypt()和openssl_decrypt().底层库(libmcrypt)自2007年以来就已被废弃,其性能远远低于OpenSSL(在现代处理器上利用AES-NI并且缓存时序安全).
此外,MCRYPT_RIJNDAEL_256不是AES-256,它是Rijndael分组密码的不同变体.如果你想在mcrypt中使用AES-256,你必须使用带有32字节密钥的MCRYPT_RIJNDAEL_128.OpenSSL使您更明显地使用哪种模式(即'aes-128-cbc'vs'aes-256-ctr').
来源和进一步阅读:https://secure.php.net/manual/de/function.mcrypt-encrypt.php#117667