Php 关于加密密码的问题

Php 关于加密密码的问题,php,mysql,hash,salt,Php,Mysql,Hash,Salt,好的。例如,我将salt的密码设置为“hello”。难道有人不能查看源代码并发现salt吗?如果是这样,我该如何隐藏它?谢谢。通常以明文形式存储在密码哈希旁边。它们存在的主要原因是使使用预计算变得更加困难,并且更难对数据库中的所有密码执行加密 您还应该为每个密码使用不同的随机生成的salt,而不是为整个应用程序使用单个salt。这意味着必须分别破解每个密码。通常以明文形式存储在密码哈希旁边。它们存在的主要原因是使使用预计算变得更加困难,并且更难对数据库中的所有密码执行加密 您还应该为每个密码使用

好的。例如,我将salt的密码设置为“hello”。难道有人不能查看源代码并发现salt吗?如果是这样,我该如何隐藏它?谢谢。

通常以明文形式存储在密码哈希旁边。它们存在的主要原因是使使用预计算变得更加困难,并且更难对数据库中的所有密码执行加密

您还应该为每个密码使用不同的随机生成的salt,而不是为整个应用程序使用单个salt。这意味着必须分别破解每个密码。

通常以明文形式存储在密码哈希旁边。它们存在的主要原因是使使用预计算变得更加困难,并且更难对数据库中的所有密码执行加密


您还应该为每个密码使用不同的随机生成的salt,而不是为整个应用程序使用单个salt。这意味着每个密码都必须分别破解。

当密码是动态的(比如成员的加入日期)时,破解效果最好。即使攻击者知道您计算散列的方式,他们也必须对每个经过盐渍和散列处理的密码进行暴力破解,这需要花费大量时间,而且(通常)报酬很少


这就是说,如果攻击者正在查看您的代码服务器端,那么您已经遇到了更大的问题。

盐是动态的(比如成员的加入日期)。即使攻击者知道您计算散列的方式,他们也必须对每个经过盐渍和散列处理的密码进行暴力破解,这需要花费大量时间,而且(通常)报酬很少


也就是说,如果攻击者正在查看您的代码服务器端,那么您已经遇到了更大的问题。

希望您的“源代码”在web服务器上运行,而不是在任何人都可以看到的客户端(javascript)上。

希望您的“源代码”在web服务器上运行,而不是在客户端(javascript)任何人都能看到的地方。

首先:安全是很难的。不要试图自己动手,因为你会把事情搞砸的。使用完善的库来处理用户身份验证


其次,你似乎误解了盐的用途。salt只是用来防止密码散列的简单反转-每个用户都应该有一个唯一的salt,但是可以将salt存储在与散列密码相同的位置。

首先:安全性很难。不要试图自己动手,因为你会把事情搞砸的。使用完善的库来处理用户身份验证

其次,你似乎误解了盐的用途。salt只是为了防止密码散列的简单反转-每个用户都应该有一个唯一的salt,但是可以将salt存储在与散列密码相同的位置。

1)不要对多个帐户使用相同的salt。如果你不能显示你的源代码并相信你的密码仍然是安全的,那你就错了

2)

1)不要对多个帐户使用同一种盐。如果你不能显示你的源代码并相信你的密码仍然是安全的,那你就错了


2)

您是否需要与不信任的人共享您的源代码?请记住,如果他们能看到您的代码,您的网站已被破坏。他们可能也可以访问您的数据库。您不再保护您的应用程序,而是保护用户的密码(大多数用户在他们使用的所有网站上使用一个密码)@SRM:all(string)散列有冲突。@SRM:事实上,所有散列到有限位数的散列都会有冲突。有无限个可能的输入,映射到有限个输出,这一事实保证了有两个输入将给出相同的输出。@Anon OK,OK。我承认。你是对的,我的陈述是错的。我已经删除了它们。你需要与你不信任的人共享你的源代码吗?记住,如果他们能看到你的代码,你的网站已经被破坏了。他们可能也可以访问您的数据库。您不再保护您的应用程序,而是保护用户的密码(大多数用户在他们使用的所有网站上使用一个密码)@SRM:all(string)散列有冲突。@SRM:事实上,所有散列到有限位数的散列都会有冲突。有无限个可能的输入,映射到有限个输出,这一事实保证了有两个输入将给出相同的输出。@Anon OK,OK。我承认。你是对的,我的陈述是错的。我已经删除了它们。这也是为什么它们应该超过5个字符,并且由一些非字母字符组成。为每个用户提供单独的盐也有帮助。@Mchl:每个用户的盐应该是唯一的。salt的全部意义在于,攻击者需要单独攻击每个散列,而不是计算大量彩虹表并针对整个用户数据库运行它。使用站点范围的salt可能比不使用salt更糟糕,因为这样一来,你会认为你有一些安全性,而实际上你没有。这也是为什么它们应该超过5个字符,并且由一些非字母字符组成。为每个用户提供单独的盐也有帮助。@Mchl:每个用户的盐应该是唯一的。salt的全部意义在于,攻击者需要单独攻击每个散列,而不是计算大量彩虹表并针对整个用户数据库运行它。使用站点范围的salt可能比不使用salt更糟糕,因为这样一来,当你真的不使用salt时,你会觉得自己有一些安全性。