gpt4 book ai didi

php - 终极密码盐

转载 作者:行者123 更新时间:2023-12-04 05:14:05 25 4
gpt4 key购买 nike

所以最近我一直在研究如何保护密码。我相信我了解它的基础知识。因此,我试图编写自己的函数来保护 php 中的密码。

但是当谈到对密码加盐时,我有些困惑。我们创建一个随机唯一的盐并将其附加到密码然后对其进行散列,最后将未散列的盐和散列的密码/盐组合一起存储在数据库中。如果黑客获得对数据库和我们散列密码的访问权限,这会增加黑客的搜索空间。

所以这似乎完全是对安全性的过度杀伤,但无论如何我看到的盐总是附加在密码的前面或后面。因此,查看单个用户的密码,这种独特的盐不会影响搜索空间,是吗?尽管由于每个用户都有一个独特的盐,每个用户的整体搜索空间都大大增加了。

创建一种将盐插入密码中可预测的半随机位置(例如 username/2 的长度)的算法不是更安全吗?例如,这里是我提议的安全功能的步骤:

Create a random salt
take username length %(mod) password length
insert the salt at the spot determined
hash

示例运行:
random salt = 12345
len("imauserwithalongname") % len("mypass") = 2
valueToHash = my12345pass

现在我们的破解者在没有看到我们的 php/source 的情况下不知道把盐放在哪里,这(如果我错了,请纠正我)比数据库更难访问。

另外我知道安全性应该取决于 key 的安全性而不是算法的保密性,但是我认为基于它添加层没有任何问题,只要整个系统不依赖于算法的保密性。

编辑:这样做会大大增加 cookies 的搜索空间吗?

如果我们将盐放在一个取决于密码长度的地方,那会不会破坏使用字典攻击的目的,即使是针对每个用户?

最佳答案

As such I am attempting to write my own function to secure a password in php.



哇哇哇,抱住它。

有一句谚语从密码学家传给了我们这些凡人,多年来一直如此。俗话说是这样的:

Do not invent your own crypto.



大声说出来,然后再说一遍。

我知道你只是想保护你的密码,但我不得不把它排除在外。有很多经过尝试和测试的方法可以完成您想要实现的目标。

感谢您进行了一些研究,但互联网上充斥着可怕的可怕信息,因此我将向您指出一些有用的文章。
  • 退房 ircmaxell's security relatedblogs .

  • 一个不错的短名单。

    这里有一些关键字可以帮助您。
  • Bcrypt
  • Scrypt(如果 PHP 支持,请有人取消它)

  • 又是一个很短的 list 。

    解决您的具体问题。盐不需要保密,正如您所说,它们旨在阻止攻击者预先计算有效密码/哈希组合表。但是,如果您使用弱散列算法,它们会很快失去值(value)。

    默默无闻的安全性并不像看起来那么好。如果黑客获得了对您数据库的访问权,那么他们也获得对您的文件系统的访问权的可能性非常高。如果他们可以访问您的来源,您存储密码的自定义方法就没有实际意义。

    总之,自定义算法+弱哈希=不安全。

    相反,您想使用久经考验的 key 派生函数/ key 强化算法。

    这些旨在使计算机真正难以生成哈希,并使攻击者很难暴力破解密码。

    Bcrypt 将盐存储在密码旁边,并被证明是非常安全的。事实上,它足够安全,目前是安全专家推荐的散列密码的方法。

    在 PHP 5.5 中引入了一个基于 Bcrypt 的简单密码散列 API,对于 5.5 以下的版本,有一个密码散列兼容性库,它可以做完全相同的事情。

    这对你来说应该足够了。

    关于php - 终极密码盐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516221/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com