相关疑难解决方法(0)

我需要用bcrypt储存盐吗?

bCrypt的javadoc有如何加密密码的代码:

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 
Run Code Online (Sandbox Code Playgroud)

要检查明文密码是否与先前已经散列的密码匹配,请使用checkpw方法:

if (BCrypt.checkpw(candidate_password, stored_hash))
    System.out.println("It matches");
else
    System.out.println("It does not match");
Run Code Online (Sandbox Code Playgroud)

这些代码片段向我暗示随机生成的盐被丢弃.是这种情况,还是只是一个误导性的代码片段?

java encryption passwords salt bcrypt

186
推荐指数
1
解决办法
3万
查看次数

使用bcrypt编写自定义tomcat域

我正在使用Tomcat 7.0作为应用程序服务器开发基于Java的Web应用程序.在对先前问题的有用回答之后,我决定使用bcrypt在我的HSQLDB中安全地存储密码.但是Tomcat的默认Realm实现无法处理bcrypt,所以我需要编写自己的; 这是我写一个自定义领域的唯一原因,尽管在其他所有方面都可以使用JDBCRealm.我一直在谷歌搜索并查看示例,我对两点感到困惑.

首先,我应该扩展RealmBase还是JDBCRealm?我发现的大多数例子都使用了RealmBase,但到目前为止我已成功使用JDBCRealm作为应用程序(因为它仍在开发中,我开始将密码存储在纯文本中,只是使用JDBCRealm来处理身份验证),并且一个答案是关于Code Ranch的一个问题建议只是扩展它.不过,我不确定在这种情况下我需要覆盖哪些方法.只是验证方法,还是更多?如果这样做,JDBCRealm仍然能够处理和管理用户角色,getPrincipal,以及所有这些?

其次,在上面链接的CodeRanch示例中,除非我遗漏了某些内容,否则getPassword方法似乎返回了未加密的密码.因为我将要使用不可能的bcrypt,而且无论如何它似乎都是不可取的,我想.在此博客文章中的其他示例中,getPassword似乎只是直接从数据库返回密码.那么哪种方式是正确的?我找不到getPassword的用途; 文档没有说.为此可以返回存储在数据库中的加密值吗?

如果有人能告诉我应该扩展哪个类,我应该覆盖哪些方法,以及getPassword应该返回什么,我真的很感激.

java authentication tomcat hsqldb bcrypt

5
推荐指数
1
解决办法
2960
查看次数

标签 统计

bcrypt ×2

java ×2

authentication ×1

encryption ×1

hsqldb ×1

passwords ×1

salt ×1

tomcat ×1