建议和反馈

请填写你的反馈内容

问答 > 密码学 > 问答详情
求助中

使用php的mcrypt,AES-128和AES-512有什么区别?10LK

我对使用php的mcrypt的AES-128和AES-512的区别感到困惑。 差异只是密钥的长度(32和64个字符)或差异是使用的算法,如MCRYPT_RIJNDAEL_128? 如果差异是后者,那么AES-512的算法应该如何呢?

2019-07-21
0
请先登陆或注册

witcher2019-07-21

首先,没有AES-512 。 使用密钥长度128,192和256指定AES。接下来,请注意不要将Rijndael与AES混合! AES 基于 Rijndael,但后者也提供块长度的选择。 使用常量MCRYPT_RIJNDAEL_128 , MCRYPT_RIJNDAEL_192 , MCRYPT_RIJNDAEL_256 ,可以在PHP中更改此块长度。

最后,请避免使用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'与'aes-256-ctr')。


投一票
评论(0)
赞赏(0)
邀请

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励