好的,我知道这个话题是在堆栈溢出中提到的很多,但是他们并没有强调我想要的答案。
我使用md5加密,我告诉它(不久前我还是个php的菜鸟)是安全的,但是如果你在好的老谷歌上查一下,它已经加密和解密了。
所以我开始寻找其他地方,也就是这里。
我听说过所有的加密方法,例如SHA-1、MD5、SHA-2、SHA-256、SHA-512等等。
很多人说使用Bcrypt来查看,这是与SHA-512的比较。
人们说,使用随机盐并将其保存在数据库中是愚蠢的,因为假设黑客侵入了数据库并获取所有密码的盐分,所以在黑客解密所有密码之前更改所有盐类,然后再到其他地方尝试,例如facebook、google和stackoverflow,这是一个小窗口。
所以我的问题是,这是这样做的最安全的方法(加密(用SHA-512加密),并使用随机盐(也将存储在数据库中),或者使用固定的盐类,这是硬连接到我的php代码中的,它与数据库随机盐具有相同的安全性。
我读过很多关于这方面的文章,所以我想我知道我在说什么,我喜欢漫不经心地说,我读过很多关于这方面的文章,确切地说是20篇。
哦,几乎忘记了,如果您对密码进行多次加密,还是只加密一次,是否会更安全?
谢谢你帮我写了很多关于的文章
我很抱歉,人们我有点困惑,但我没有得到一些其他人的帖子,我开始闲谈关于加密,但我说的是哈希字符串。
对此我很抱歉
发布于 2012-04-26 08:55:23
我使用md5加密,我告诉它(不久前我还是个php的菜鸟)是安全的,但是如果你在好的老谷歌上查一下,它已经加密和解密了。
首先是吹毛求疵。这是散列而不是加密。散列是一种方法。现在要回答您的问题:不要使用md5()来散列密码。已经不安全了。它已经坏了好几年了。不仅发现了冲突(导致相同哈希的多个值),而且使用任何合适的GPU,md5都可以非常快地被强制执行。
很多人说使用我看过的Bcrypt,它是对SHA-512的。
你应该用bcrypt。就目前而言,这是密码哈希的最佳选择。
人们说使用随机盐并将其保存在数据库中,这是愚蠢的。
不,这不傻。盐碱化密码可防止攻击者为所有密码创建彩虹表。为了您的方便,艾克斯克尔创建了一个密码库,可以在GitHub上找到。
一些相关文章和堆栈溢出帖子:
更新
当PHP5.5发布时,它将引入一种简单的方法来正确加密您的密码。默认情况下,它将使用bcrypt,并自动向密码中添加盐分。当一种更好的算法在未来(例如氪星)出现时,它将能够使用它。有关更多信息,请参见关于这个新特性的RFC。它还将具有一个功能,即检测当前散列密码的使用算法,并在用户可用时登录到更新(/更安全)算法时自动更新它们。有关实现示例,请查看这个GitHub要点。
如果您仍然使用较旧版本的PHP,并且无法更新,则会出现a pure PHP implementation of the C API available with support of PHP >= 5.3.7。这个compat使用与C完全相同的实现。
注意:使用更安全的scrypt甚至更好,但是到目前为止PHP还不支持它。如果情况确实如此,我将更新这一答复。
发布于 2012-04-26 08:48:35
你把散列和加密搞混了。
发布于 2012-04-26 08:49:45
我使用用户名中的某些字符以及php代码中的一个字符串进行盐分。从理论上讲,他们需要代码和数据库来解决这个问题。
https://stackoverflow.com/questions/10329999
复制相似问题