首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jBCrypt进行密码哈希比较?

如何使用jBCrypt进行密码哈希比较?
EN

Stack Overflow用户
提问于 2012-03-15 14:58:57
回答 1查看 9.8K关注 0票数 14

我在使用BCrypt的checkpw(平原‘s,previoushash)方法来匹配明文密码和先前的散列时遇到了问题。

在寄存器servlet中,我接受输入的密码,使用BCrypt的hashpw(password,genSalt)方法散列它,并将其存储在db中。

在登录servlet中,我从db获取该散列,并使用BCrypt的checkpw查看它是否与输入的密码匹配。

从来都不匹配。这在我的常规java应用程序中运行得很好,只是在webapp中不行。没有其他人有这个问题,所以我想我一定是做错了:

代码语言:javascript
复制
//RegisterServlet

String pw_hash = BCrypt.hashpw(request.getParameter("password"), BCrypt.gensalt()); 

String loginInsertString = "insert into login (loname,lopassword,locustomerid)" +
                    " VALUES ('" + username + "','" + pw_hash + "','" + loginInsert +     "');";


//LoginServlet

ResultSet rs = stmt.executeQuery("select lopassword from login where loname = '" +
                    loginName + "';");
            while( rs.next()){
                dbhash = rs.getString(1);

            }
            out.println(dbhash+"<br>");

if (BCrypt.checkpw(request.getParameter("password"), dbhash)) {
                out.println("It matches");
            }else{
                out.println("It does not match");
            }

BCrypt API非常简单- here

我不会储存盐,因为你认为BCrypt没必要--那我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2013-02-12 10:43:56

pw_hash存储的数据库字段为80个字符。这比一个BCrypt散列多20个字符。将散列修整或将数据库字段重置为60个字符。

(张贴给定的答案请参见有关问题的注释,以将问题从未回答的队列中删除。用户在将近一年前被要求这样做,但还没有这样做。这个答案是他们的功劳)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9722388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档