【问题标题】:How to use AES256 in PHP - encryption / decryption如何在 PHP 中使用 AES256 - 加密/解密
【发布时间】:2014-04-23 12:20:34
【问题描述】:

我已经使用了一些 sha1/MD5 加密技术,但我需要创建一个 PHP 类来使用具有强大安全性的 AES-256 加密/解密数据。我怎样才能做到这一点 ?我在网上看到了很多代码(感谢谷歌),但没有找到明确的方法来实现它

【问题讨论】:

  • 我终于在不同的地方找到了一些东西,我创建了一个小类,它是一个 yii(php 框架)插件。您可以查看它并将其用于 yii 项目或任何 php 项目。随意评论这个。 https://github.com/lucbonnin/aes256_yii_extension

标签: php security encryption aes


【解决方案1】:

只需使用 MCRYPT_RIJNDAEL_128 和 256 位密钥

看看这个:https://gist.github.com/RiANOl/1077723

【讨论】:

  • 你可以添加 $IV = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
  • Erm,如果您指定MCRYPT_RIJNDAEL_128,那么您将获得 AES128。 mcrypt 太糟糕了,根本不关心提供的密钥的实际长度。
  • @Timur:两件事:1. 永远不要使用 MCRYPT_RAND,它不安全。 MCRYPT_DEV_URANDOM 是你的朋友。 2. 修补它并告诉我它是否有效。 (除非您通过密文传递IV,否则它将生成一个完全不同的IV 用于解密和破解。) Perseids:不! MCRYPT_RIJNDAEL_128 是 AES。如果您传递 256 位密钥,您将获得 AES-256。有些人将 MCRYPT_RIJNDAEL_256 视为 AES-256,但 AES 严格来说是 128 位的 Rijndael。 Rijndael-256 是一种不同的分组密码。这不是一回事。
【解决方案2】:

我终于在不同的地方找到了一些东西,我创建了一个小类,它是一个 yii(php 框架)插件。您可以查看它并将其用于 yii 项目或任何 php 项目。随意评论这个。

https://github.com/lucbonnin/aes256_yii_extension

【讨论】:

  • 乍一看,这个实现看起来相当不错。我可能会赞成它,但在 Stackoverflow 上不赞成仅链接的答案:meta.stackexchange.com/a/8259/196445
  • 不,此代码使用 MCRYPT_RIJNDAEL_256 而不是 AES-256,并且不以时间不变的方式比较 MAC。我不推荐它,按原样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 2016-02-03
  • 1970-01-01
  • 2012-11-18
  • 2010-12-10
  • 2021-10-08
  • 2012-04-09
相关资源
最近更新 更多