【发布时间】:2010-11-11 04:23:19
【问题描述】:
我正在用 JSF 编写一个新站点。目前我对登录进行编程。
几年前我使用过 md5,但对于 Rainbow Tables,我认为它不再安全了。
那么,我应该如何将密码存储在数据库中?
【问题讨论】:
-
如果盐分不错,即使是 MD5 对于某些应用程序也是可以接受的。最重要的是给密码加盐。
标签: security passwords md5 sha1
我正在用 JSF 编写一个新站点。目前我对登录进行编程。
几年前我使用过 md5,但对于 Rainbow Tables,我认为它不再安全了。
那么,我应该如何将密码存储在数据库中?
【问题讨论】:
标签: security passwords md5 sha1
【讨论】:
您要做的第一件事是从您的供应商那里寻找预构建的系统。您希望尽可能多地将其推送给以编写安全代码为生的人,因为很容易以您甚至不知道的微妙方式出错,直到为时已晚。这样,您还可以从他们那里获得服务更新,因此您不必再考虑它了。
除此之外,请记住生成每个帐户的 salt 以配合您的密码,并使用安全的散列算法(md5 意味着速度,不一定是安全性)。 SHA1 很常见,虽然它也开始变老了。
【讨论】:
我建议使用 sha512 和 salting 进行散列。 (为每个人存储一个随机值并将密码和该值一起散列。)
【讨论】:
如果您查找 PKCS#5(或者更好的是,找到已经这样做的有信誉的实现),您会发现一个非常好的机制。
基本上,您选择一个数字(比如 500)、一个密码、一个哈希算法和一个盐(在密码末尾添加随机数据以使其不易被猜到)。
【讨论】: