相关疑难解决方法(0)

你在哪里储存盐串?

在散列数据库存储密码时,我总是使用正确的每个条目的盐字符串.根据我的需要,将盐存储在哈希密码旁边的数据库中一直运行正常.

但是,有些人建议将盐与数据库分开存储.他们的论点是,如果数据库受到攻击,攻击者仍然可以构建一个彩虹表,将一个特定的盐字符串考虑在内,以便一次破解一个帐户.如果此帐户具有管理员权限,那么他甚至可能不需要破解任何其他帐户.

从安全角度来看,将盐储存在不同的地方是否值得?考虑在同一台机器上具有服务器代码和DB的Web应用程序.如果盐存储在该机器上的平面文件中,则很可能如果数据库受到损害,则salt文件也是如此.

有什么建议的解决方案吗?

security authentication hash cryptography salt

242
推荐指数
4
解决办法
7万
查看次数

Salt Generation和开源软件

据我了解,生成盐的最佳做法是使用源代码中存储的一些神秘公式(甚至魔术常量).

我正在研究一个我们打算作为开源发布的项目,但问题是源代码是生成盐的秘密公式,因此能够在我们的网站上运行彩虹表攻击.

我认为很多人在我面前都考虑过这个问题,我想知道最佳做法是什么.在我看来,如果代码是开源的话,根本就没有盐,因为盐可以很容易地进行逆向工程.

思考?

security encryption open-source salt rainbowtable

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

你如何在MySQL中安全地存储用户的密码和盐?

所以,我发现你应该将密码与"盐"一起散列.(文章可以在这里这里找到.)

这是代码:

$password = 'fish';

/* should be "unique" for every user? */
$salt= 'ABC09';

$site_key = 'static_site_key';

hash_hmac('sha1', $password . $salt, $site_key);
Run Code Online (Sandbox Code Playgroud)

现在我需要的方法来保存$password$saltMySQL中,就像这样:

+---------+--------+----------+-------+
| user_id |  name  | password |  salt |
+---------+--------+----------+-------+
|    1    | krysis |  fish**  | ABC09 |
+---------+--------+----------+-------+
Run Code Online (Sandbox Code Playgroud)

**fish当然会被散列,而不是以纯文本形式存储.

而我只是想知道这样做是否真的有意义,因为这样一个黑客或谁也知道盐?所以,如果他们破解密码并且看到fishABC09它们,他们会自动知道密码是fish什么?或者他可能"永远"无法破解密码,因为他不知道密码secret_key,因为它没有存储在数据库中?

如果我没有任何意义,我很抱歉.我只是一直用于sha1密码,今天我发现这些文章谈到了添加一个salt.

mysql passwords sha1

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

盐渍SHA1与盐渍SHA512相比有多不安全

SHA512比SHA1更复杂,但是与使用512对哈希值进行散列相比,使用SHA1对盐渍密码进行哈希处理会损失多少安全性?就拥有数据库的人破解单个密码所需的时间而言.我使用的框架不能让我轻松访问SHA512,我必须覆盖一些东西以使其工作,所以我想只使用SHA1,虽然在过去我总是使用SHA512.

php security hash sha1 sha512

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