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

use*_*704 0 php encryption cryptography aes mcrypt

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

svr*_*rnm 5

首先,没有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

  • 除非您恰好是银行的支付处理器,否则请避免存储信用卡号码.认真.但如果你需要保留信用卡号码,[安装libsodium并使用`\ Sodium\crypto_box_seal()`](https://paragonie.com/white-paper/2015-secure-php-data-encryption#crypto-seal )用公钥.保持相应的密钥脱机. (2认同)