FlexibleJDBCRealm和Digest

时间:2012-10-13 16:03:50

标签: java java-ee glassfish java-ee-6

我在Glassfish中使用它,如果我不对我的密码进行哈希(因此它们是纯文本),它可以正常工作。

但是,如果我尝试使用散列,我无法让它工作。在我的Java代码中,当我创建一个新用户时,我像这样散列密码(使用charset编码的默认值)

    MessageDigest md5 = MessageDigest.getInstance("MD5");                    
    byte[] hashedPassword = md5.digest(password.getBytes());
    return new String(hashedPassword); 

在领域的属性中,我将“password.digest”属性设置为MD5。

注意,我将在现实中使用SHA-512但是为了简单起见我正在尝试MD5,因为它在FlexibleJDBCRealm的文档中提到过。

有什么想法吗?感谢

PS现在有一个包含在Java中的这种领域的更“官方”版本吗?如果在某些时候将FlexibleJDBCRealm(或类似的)内置到Java EE中,那将是很好的。

1 个答案:

答案 0 :(得分:0)

我做错了两件事:

我没有一直使用charset编码。我现在使用Charset.defaultCharset()。name(),它也是FJDBCR使用的默认值:

MessageDigest sha = MessageDigest.getInstance("MD5");                    
byte[] digestedPassword = sha.digest(password.getBytes(Charset.defaultCharset().name()));
return new String(digestedPassword, Charset.defaultCharset().name());

注意它在上面的代码中用于第二行和第三行。

我也没有设置password.encoding属性(假设TEXT将用作默认值)。

现在一切正常。接下来要添加种子,并使用SHA-512,我应该启动并运行