相关疑难解决方法(0)

hash(hash())vs salted hash

由于Rainbow表的引入,并且仅使用散列密码(例如:MD5)来存储数据库中的密码并不是最好的安全方式.

当人们谈论盐渍哈希时,总是以这种方式使用它hash(password . salt)甚至是hash(hash(password) . salt).

我不知道为什么要使用salt,并为每个密码添加额外的条目来存储盐?为什么我们不使用hash(hash(password)),甚至hash(hash(hash(password)))

放盐更安全吗?还是只是感觉更复杂?

security hash salt password-hash

3
推荐指数
3
解决办法
2304
查看次数

加密密码的安全方式

可能重复:
PHP密码的安全散列和盐

这是加密密码以存储在mysql数据库中的安全方法:

md5(sha1($password))
Run Code Online (Sandbox Code Playgroud)

谢谢.

php mysql

3
推荐指数
1
解决办法
1558
查看次数

这是否足够安全,用于散列

hash('sha512', $_POST['password'] . time()) 
Run Code Online (Sandbox Code Playgroud)

我听说过很多关于这个和那个的事情,并且无法得出结论......

php hash

3
推荐指数
1
解决办法
100
查看次数

为什么对散列密码加盐会提高安全性?

我一直在做一些关于在数据库中安全存储密码的研究。通常建议您使用盐。正如Secure hash and salt for PHP passwords中的一个答案所解释的那样,这会更改哈希值,使密码更难以破解。

作为验证机制的一部分,用户输入的密码与盐结合并根据需要进行散列。鉴于盐对用户是透明的,使用盐如何提供任何额外的好处?

在我看来,无论有没有散列,相同的密码都将成功验证您的身份,因为使其与众不同的管道将在幕后进行。这就是为什么到目前为止我读过的文章都没有澄清事情的原因。

security salt

3
推荐指数
1
解决办法
1986
查看次数

使用sha1和salt存储密码

我有一个简单的注册脚本在PHP完成,我只是好奇,如果我这样做的方式足够安全,以存储用户密码.我正在生成一个32位随机盐并将其附加到sha1哈希密码.

//create new validator object
    $validator = new data_validation();
    //validate user input
    $firstName = $validator->validate_fname($firstName); //is the first name a string?
    $lastName = $validator->validate_lname($lastName); // is the last name a string?
    $username = $validator->validate_username($username); // is the username a string?
    $email = $validator->validate_email($email); //is the email in valid format?

    //make sure there isn't duplicate emails
    $valQuery = $link->query("SELECT email FROM users WHERE email = '" .$email. "'");

    if ($valQuery->num_rows == 1) {
        echo "An email is already registered with that …
Run Code Online (Sandbox Code Playgroud)

php hash mysqli sha1 salt

3
推荐指数
1
解决办法
1万
查看次数

哪个是 PHP 的最佳密码散列算法?

我只是在阅读一篇关于创建登录系统的帖子,在阅读时我看到了密码散列。

我们将存储一个 sha256 哈希值,它是一个始终包含 64 个字符的字符串。

这篇文章正在教使用sha256哈希函数。读完之后,我并没有停下来,开始搜索更多关于创建安全登录系统的内容,然后我想出了wikiHow 的这篇文章。在本文中,他们使用sha512哈希函数。这让我很困惑,我将在下一个登录系统中使用哪个功能。我仍然在 google 上搜索更好的文章,并通过crackstation找到了这篇文章。作者推荐sha256和sha512。

只能使用加密散列函数来实现密码散列。SHA256、SHA512、RipeMD 和 WHIRLPOOL 等哈希函数是加密哈希函数。

我以为我的搜索已经结束,我可以使用sha256sha512运行,但在搜索更多时,我发现了这个SO Question罗伯特 K接受的答案对我来说有新的东西。关于我以前从未听说过的事情是bcryptscrypt

所有这些东西都是大约 2 到 4 年前写的。

现在用于 PHP 的最佳密码散列算法是什么?

php security hash

3
推荐指数
1
解决办法
8106
查看次数

PHP / MySQL:为加密密码选择哪种数据类型(bcrypt,最大100个字符)

在将密码存储在MySQL数据库中之前,我使用以下方法对密码进行加密

目前,我已将密码限制为最大长度。20个字符,因为我不确定较长的密码是否会由于加密输出而在此处引起问题。

在PHP中,我使用以下代码进行加密:

$pw = password_hash($_POST["pw"], PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)

密码在传递之前在客户端进行了修整。

有人可以告诉我是否 CHAR(60) 足以覆盖最多100个字符(数字,大写和小写字母,特殊字符)的密码吗?

另外,是否有一个共同的最大值。应为密码设置的字符限制-不会增加漏洞? 我了解到有些人肯定想使用更长的密码,例如短短语等。

php mysql passwords hash

3
推荐指数
1
解决办法
3656
查看次数

用于密码存储的SHA1哈希的一个很好的替代方案是什么?

我有一个网站使用SHA1哈希密码.我最近阅读了以下文章,该文章认为不使用SHA1作为密码,因为SHA1从未设计用于保护密码:http://arstechnica.com/security/2012/08/passwords-under-assault/4/

你能否推荐一个好的哈希方法,我可以实现而不是SHA1,请提供一个教程的链接,该教程逐步介绍如何使用php实现该加密方法?

php security sha1

2
推荐指数
1
解决办法
2390
查看次数

密码存储,hash()与sha-512或crypt()与河豚(bcrypt)?

这是我目前在PHP/SQL项目中的密码哈希程序...

  • 从/ dev/urandom获取512位每用户盐,除了最终哈希之外,还存储在用户的DB记录中
  • 从/ dev/urandom中取出512位"pepper",它存储在文件系统中.这是每个应用程序的常量,并且对于每个用户都是相同的
  • 然后 hash('sha512', $password.$salt.$pepper, TRUE)

散列和盐在DB中以二进制形式存储,主要是出于习惯.我认为它在安全方面没有任何区别.如果有的话,它对SQL备份来说稍微不方便,并使PHP代码看起来稍微复杂一些.

hash()与SHA-256和SHA-512通常被认为已被bcrypt这些天superceeded?
我相信SHA-2(256/512)仍然被认为是加密安全的,我可能过度使用了熵位.与攻击者从数据库转储中反向设计SHA-2哈希相比,我的代码中的缺陷更有可能导致问题.

但是,我是否应该更新我的方法以继续使用crypt()CRYPT_BLOWFISH(我相信这被称为bcrypt,而blowfish在技术上是一种密码而不是哈希算法)?
即使只是作为未来的最佳实践?

我并不特别关心算法的计算费用(在合理范围内).这只是在您创建帐户,更改密码或在您进行哈希比较时登录时的一个因素.这些活动构成了一小部分页面浏览量.我想在某种程度上越慢越好,如果它使服务器更难以生成,那么它将使攻击者的工作更慢到暴力.

干杯,B

php hash sha bcrypt password-encryption

2
推荐指数
1
解决办法
5361
查看次数

密码哈希,BCrypt到SHA1/MD5

我一直在考虑升级我的一个应用程序的密码哈希安全性,因为我一直在阅读有关暴力攻击的速度比以前快得多.目前我正在使用sha1(md5($password)),我看到使用bcrypt + salt的好处.我的问题是,如果我要做以下事情会更安全吗?

场景1:

$password -> sha1 -> bcrypt -> sha1
// This would enable me to keep all existing passwords and just 
// regenerate all the hashes without waiting for the user to re login
Run Code Online (Sandbox Code Playgroud)

场景2:

$password -> bcrypt -> sha1
// I would have to add an extra column for the new hash until every
// user has logged in but the hash will still be sha1.
Run Code Online (Sandbox Code Playgroud)

这两个中的任何一个都会增加哈希的安全性吗?我不是加密大师,远非它,我只想简单解释它是否会起作用,如果没有,为什么.

谢谢

编辑

经过一点阅读之后,似乎bcrypt受到青睐,因为它的缓慢使我在生成哈希之前使cpu/gpu工作的时间更长.

在sha1 vs bcrypt的情况下,sha1比bcrypt快大约300000倍.这引出了一个问题,如果bcrypts的优势很慢,那么使用sha1 300000次的递归散列函数肯定会像bcrypt一样安全吗?

我把这个函数作为一个例子: …

php encryption hash sha1 bcrypt

2
推荐指数
1
解决办法
6462
查看次数