究竟如何在PHP中使用blowfish?

sha*_*arf 9 php passwords hash crypt blowfish

可能重复:
使用PHP加密和解密密码的最佳方式?

我最近用PHP做了很多事情,想要建立我的第一个登录/注册系统.因此,我一直在网上做很多阅读,以找出实现这一目标的最佳方法.我遇到了几个指南,我对几个实例感到困惑,在开始这条路之前我想确定一下.

我的问题是我究竟如何使用河豚?我已经读过如果提供适当的盐,crypt()将自动选择河豚.如果是这样的话,是什么让盐河豚适合?

现在,我有一个脚本,它从日期和时间中取出一个盐,一个随机数,然后哈希为盐.那是否可以与河豚一起使用?

irc*_*ell 12

简而言之:不要自己构建它.使用图书馆.

在PHP 5.5中,将有一个新的API可以使您更轻松地完成此过程.这是RFC.

我还在这里为它创建了一个向后兼容的库:password-compat:

$hash = password_hash($password, PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)

然后验证:

if (password_verify($password, $hash)) {
    /* Valid */
} else {
    /* Invalid */
}
Run Code Online (Sandbox Code Playgroud)

如果你想要另一个图书馆,请查看phpass

简而言之,不要自己动手.没有必要.只需导入库并完成它...

  • @sharf:看一下库的功能(compat应该很容易阅读).这应该让你深入了解这一切是如何运作的...... (2认同)

Ale*_*rth 6

看看http://php.net/manual/en/function.crypt.php

如果向下滚动约1/3,您应该看到标题:Example #3 Using crypt() with different hash types.希望这会有所帮助!你的盐应该没问题!

  • 我已经看到了,但我仍然感到困惑.我只是将$ 2a $ 07 $加到我的盐面上(另一个$到底)以使它使用河豚?另外,那个例子中的07是多少轮? (3认同)