2011-04-14 66 views

回答

1

加密/散列用户名是一种矫枉过正的行为。如果你担心安全,只需使用SHA256与随机salt哈希。

加密用户名没有意义,因为您可能基于userName,部分userName进行搜索。加密只会让搜索变得困难。


好吧,我的整个生活中,我一直在使用SHA256与盐认为它是最强大的。 Rein Henrichs对此帖的好评如下:SHA256 may not be the safest。你可能想要使用bcrypt,但我想这很慢。我会做一些概念验证,如果速度很慢,那么我会留下SAH256 +散列。

感谢您的链接。

+1

SHA不是一个足够复杂的哈希函数,可以防止强力攻击。见http://codahale.com/how-to-safely-store-a-password/ – 2011-04-14 04:47:08

+0

谢谢!我想尽可能多,但我只是想,它不会要求 – mcbeav 2011-04-14 04:49:00

+0

@all更新的答案。 – Nishant 2011-04-14 04:52:22

1

没有必要。只需使用哈希函数来设计暴力破解,就像bcrypt一样。 SHA不足。

1

不,你不应该。

否则,您无法显示注册用户列表或任何类型的注册用户。它也会使很多其他功能变得不必要的笨重。

只需使用适当高的工作因子对用户密码的单向摘要方法(如bcrypt)。

+1

我同意你不应该散列用户名,但我也不建议存储“加密”密码。始终使用安全的1路散列哈希密码。我总是怀疑那些允许我取回密码的网站,而不是强制重置,因为这意味着某些管理员可以解密我的密码。 – squawknull 2011-04-14 04:38:53

+0

@squaknull对不起,哈希是我的意思。将解决我的答案。 – alex 2011-04-14 04:46:10

1

千万不要以明文形式存储密码。但你不需要散列用户名。

但我想你会使用这个用户信息的某些服务器来允许客户端登录。如果密码未从客户端传输到服务器,则安全。在这种情况下,您可以使用某种单向散列来输入密码。如果您的客户端和服务器都知道散列函数,则您的密码永远不需要通过线路连接。但是如果你想改变散列机制,就会出现问题。您的客户端和服务器都需要更新。在这种情况下,客户端必须协商使用哪种机制服务器。你最终会做一种spnego机制;)

相关问题