【问题标题】:What is the difference of AES-128 and AES-512 with php's mcrypt?AES-128 和 AES-512 与 php 的 mcrypt 有什么区别?
【发布时间】:2016-02-21 14:14:33
【问题描述】:

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

【问题讨论】:

  • 没有像 AES-512 这样的东西。
  • @user4271704 密钥长度 x 包含 AES-x 的所有内容,每个 AES-yyy 定义为 MCRYPT_RIJNDAEL_128MCRYPT_RIJNDAEL_192MCRYPT_RIJNDAEL_256 已经与 AES 无关了。
  • @svrnm 不正确,mcrypt 支持 AES-256 。您只需要提供一个 32 字节的密钥。
  • @user4271704 是的,没错,但请记住,您应该使用实际上具有大量熵的密钥。如果您使用一些密码,那么暴力破解比完全随机的密钥要容易得多。
  • 旁注:选择密码只是保护信用卡数据的一部分;坦率地说,与其他任务相比,这是一个次要的任务。提出这个问题以及你这样做的方式表明你距离实施例如还有很长的路要走。 dss 指南。如果您向 cc 处理器寻求解决方案,可能会更好。

标签: php encryption cryptography aes mcrypt


【解决方案1】:

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

最后,请避免使用mcrypt。还有更好的选择,即openssl:

如果您在 2015 年编写代码来加密/加密数据,则应使用 openssl_encrypt() 和 openssl_decrypt()。底层库 (libmcrypt) 自 2007 年以来已被弃用,其性能远低于 OpenSSL(在现代处理器上利用 AES-NI 并且缓存定时安全)。

另外,MCRYPT_RIJNDAEL_256 不是 AES-256,它是 Rijndael 分组密码的不同变体。如果您想在 mcrypt 中使用 AES-256,则必须使用 MCRYPT_RIJNDAEL_128 和 32 字节密钥。 OpenSSL 让您更清楚您正在使用哪种模式(即“aes-128-cbc”与“aes-256-ctr”)。

来源及延伸阅读:https://secure.php.net/manual/de/function.mcrypt-encrypt.php#117667

【讨论】:

  • 对于使用openssl_encrypt的CC号码加密,这个方法$method = 'aes-128-cbc' 32字节密码是公平的吗?
  • 什么是“CC号码加密”?
  • 我想使用 openssl_encrypt 加密数据库中的信用号码。我知道 PCI 合规性,但在这里我只是询问信用卡加密,请指教。
  • 我不会只是在不知情的情况下加密数据。我不是这方面的专家,所以也许你应该继续阅读,例如:stackoverflow.com/questions/9262109/…
  • 避免存储信用卡号码,除非您碰巧是银行的付款处理方。严重地。但如果您需要保留信用卡号码,请使用公钥install libsodium and use \Sodium\crypto_box_seal()。保持相应的密钥离线。
【解决方案2】:

在 AES 中,-xxx 是密钥长度 - 但是我相信 PHP 支持的三种 AES 密码是 AES-128、AES-192 和 AES-256

【讨论】:

  • 那么对于 AES-256,我应该使用 32 个字符的密钥吗?并且 AES-256 比其他两个更安全?
  • -xxx 是块长度,不是密钥长度!
  • 使用 mcrypt_get_key_size() 将返回任何密码所需的密钥长度 - 是的,更长的密钥将更难破解,
  • @svrnm 这是错误的。请不要混淆 AES 和 Rijndael。
  • @ArtjomB.:我没有混淆他们,我只是说 _XXX 不是 MCRYPT_RIJNDAEL_XXX 的密钥长度,但也许这不是 Liam Wiltshire 的意思......我很抱歉。
猜你喜欢
  • 2014-12-10
  • 1970-01-01
  • 2013-10-21
  • 2020-10-15
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多