0

私はこれをGlassfishで動作させていますが、パスワードをハッシュしない場合(つまり、プレーンテキスト)は正常に動作します。

しかし、ハッシュを使おうとすると、それを機能させることができません。私のJavaコードでは、新しいユーザーを作成するときに、次のようにパスワードをハッシュします(文字セットエンコーディングのデフォルトを使用)

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

そして、レルムのプロパティで、「password.digest」プロパティをMD5に設定しました。

実際にはSHA-512を使用しますが、FlexibleJDBCRealmのドキュメントに記載されているため、簡単にするためにMD5を試しています。

何か案は?ありがとう

PS最近、Javaに含まれているこの種のレルムのより「公式な」バージョンはありますか?ある時点で、FlexibleJDBCRealm(または同様のもの)がJavaEEに組み込まれていれば素晴らしいと思います。

4

1 に答える 1

0

私は2つの間違ったことをしていました:

私は一貫して文字セットエンコーディングを使用していませんでした。現在、FJDBCRで使用されるデフォルトでもあるCharset.defaultCharset()。name()を使用しています。

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

上記のコードの2行目と3行目の両方で使用されていることに注意してください。

また、password.encodingプロパティを設定していませんでした(TEXTがデフォルトとして使用されると想定しています)。

すべてが動作します。次にシードを追加し、SHA-512を使用すると、稼働状態になります。

于 2012-10-18T13:49:10.463 に答える