用户认证密码检查数据库

时间:2011-10-12 01:30:14

标签: java mysql database authentication jdbc

我正在开发一个需要用户进行身份验证的应用程序。我这样做是通过拥有一个具有配置文件表的数据库,并在表中包含用户名和密码。我打算让用户输入他们的用户名和密码,然后将他们给定的数据与数据库中的数据进行比较。如果它们是相同的,那么它们就会登录。这是正确的方法吗?

如果这是正确的方法,我如何将用户的给定密码与数据库中的密码进行比较?数据库中的密码使用PASSWORD函数加密。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用AES_ENCRYPT(),AES_DECRYPT()函数。这是我提出的方式。在程序中,您保留一个存储加密密钥的常量全局变量。

所以你可以像这样比较密码。

SELECT User_ID FROM profile其中profile.userID ='+ userID +'AND profile.password = AES_ENCRYPT('+ givenpassword +','“+ USER_ENCRYPTION_KEY +”')

希望这会对你有所帮助。

普拉萨德。

答案 1 :(得分:1)

你有基础,是的。 通常会在密码中添加salt,然后使用单向哈希算法(例如SHA1(),SHA256()等)对其进行哈希处理。然后存储用户名,盐和哈希密码+ salt在您的数据库中。 在验证凭据时,您将根据用户名检索salt,然后使用它来散列提供的密码,然后将其与您存储的密码进行比较。对用户的响应失败不应指示密码或用户名是否错误。只是因为SOMETHING不正确。

盐可防止字典攻击。单向散列可以防止任何人(包括您或用户)检索到密码。你只能重置它。

这绝不是一本综合指南。还有一些建议可以让你更接近。