2012-02-06 90 views
0

因此,密码不应该以明文存储,但许多人不管怎样。对于其他人有没有存储密码的标准方式?我的意思是一个SHA1哈希或MD5哈希,如果是的话盐的大小是什么?有没有更好的地方来问这个问题?有没有一种标准的方法来存储密码在数据库中?

我想挑系统管理者和顾问对目录服务工作的大脑。我试图看看是否有一个模式。

编辑:我想澄清一下,我不是想学习如何存储密码更好的自己,但更想看看他们是如何存储许多不同的方式,如果有一个标准如果有的话。

+3

检出http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database – 2012-02-06 04:49:19

回答

-1

你可以看到this question对答案的盐应该有多长(128-256位之间似乎是共识)。

至于哪种算法来使用,你绝对应该使用SHA1。 MD5被认为是打破即使它仍然是常用不久前(见wikipedia MD5

+0

虽然SHA1比MD5好得多,但它并不是用来存储密码的。你应该使用'bcrypt'之类的东西。看到@jeffsix和@Shivam的回答 – dave1010 2012-07-03 10:09:55

1

MD5已被打破了一段时间,SHA-1也有问题。

如果你想存储的哈希,这将是SHA-256或SHA-512(SHA-2散列家族的一部分,被设计为SHA-1的安全替代品)是一个不错的选择,并且在128到256位盐之间是标准的

但是,使用普通散列并不是现在这样做的最佳方式。自适应散列专门为此类存储设计为计算结果所需的时间量可以通过额外的计算减慢。这是一个非常重要的特征,必须防止对存储的密码进行暴力攻击。基于对Blowfish加密算法的修改,使其适合于此目的(which is explained well here),自适应哈希的强大而标准的实现是bcrypt。

0

密码应被散列和散列应存储在数据库中。 然而,SHA *和MD5太快了散列算法被用于散列密码的目的。 对于哈希密码,理想情况下需要速度慢得多的东西,这种方法不适用于暴力/彩虹表攻击。

可以肯定的是存储的哈希,使它的时间和前散列次密码1000计算密集型的,但为什么还要这样做,当你有一个像bcrypt算法,为你做的工作。

你应该使用bcrypt来散列你的密码。阅读更多关于它的信息 http://codahale.com/how-to-safely-store-a-password/

在bcrypt中,由于盐被附加到散列 - 你甚至不需要在表中添加两列'password_hash'和'salt'。只是'password_hash'。越不好越好。

+0

我希望那些低调的人可以解释为什么他认为bcrypt会是一个糟糕的选择(或者是什么原因导致的低估)! – CodeExpress 2012-02-07 18:55:12

相关问题