【问题标题】:encryption using PHP crypt使用 PHP crypt 加密
【发布时间】:2014-02-13 14:57:29
【问题描述】:

我在使用 PHP crypt 加密时遇到问题

以下是我的代码:

echo $ret = crypt('Dave@123','$2y$10$XLLl50bLyTWfjcvCAxwGRu/px2Q.LXN0fHpD1KN2CQCMx/tpL1V62');

1) 在 PHP 版本 5.4.22 中使用 crypt 时 结果:

 $2y$10$XLLl50bLyTWfjcvCAxwGRu/px2Q.LXN0fHpD1KN2CQCMx/tpL1V62

2) 当与 PHP 版本 5.2.17 一起使用时,结果

 $25nFTQHtfjVg

我想要和 1 一样的结果。

【问题讨论】:

  • 您是否知道 1) 的第一个结果显示了 crypt 函数的第二个输入?我不想让我的输入作为输出回来。
  • @Samuel 你知道这是有意的行为吗?
  • PHP 5.2 即将结束。你实际上不想要那个。 -- -1:只想要某物。不符合编程问题。编辑:对你的支持者感到羞耻(:)):比存在数月并有答案的重复投票还要多(!)。

标签: php


【解决方案1】:

问题在于 2y 河豚前缀。它是在 PHP 5.3.7 中的安全问题之后引入的,因此 PHP 5.2 不知道它,看到无效的 $salt 并生成无效的哈希。

PHP 5.2 中的等价物是2a,但它可能会受到上述安全问题的影响(我没有检查)。

【讨论】:

    【解决方案2】:

    来自manual。我知道他们在 5.3.7 中引入了 更新 $2y$ Blowfish 模式。所以在 PHP 5.2.17 中你可能会得到 DES。哈希的类型取决于您提供的盐。

    【讨论】: