【发布时间】:2013-12-14 01:05:56
【问题描述】:
我有一个数据库,其中密码用普通的旧 md5 加密。没有盐。所有用户名都是数字。
这就是数据库的样子..
用户名、密码、哈希密码 0101,abcd123,79cfeb94595de33b3326c06ab1c7dbda
我正在使用 Spring Security 编写一个 Web 应用程序。当用户输入 0101 作为用户名,然后输入 abcd123 作为密码时,我已经设法使身份验证工作。
但我真正想要的工作是用户输入 101(不带前导零) 作为用户名和 abcd123 作为密码。
我通过覆盖 org.springframework.security.core.userdetails.UserDetailsService > loadUserByUsername(String userId) 让我的代码使用前导零。
我开始查看 salt,然后意识到我完全走错了路,因为这与我的使用密码无关。
如何更改我的代码以符合我的要求?我试图破解我自己的 loadUserByUsername(String userId) 实现,在方法中添加一个 0 ,但这不起作用。
谢谢
【问题讨论】:
-
为什么要存储密码和哈希?基本上这是不安全的,因为您存储的是纯密码,这是您永远不应该做的事情。关于前面应该工作的 0 。您可以尝试使用初始的
userId,如果找不到,请使用0+userId重试。 -
MD5 也不应该用于散列,因为它很容易破解。有了spring security,你就不用担心盐了。它为你处理。你也应该看看 BCrypt 密码编码器。 stackoverflow.com/questions/8521251/…
-
感谢 cmets 伙计们。但我没有实现散列。我只是将我的应用程序连接到其中。如果我所做的应该有效,我会坚持下去。谢谢
标签: spring spring-mvc spring-security