Javaメッセージダイジェストを使用して、認証に使用されるMD5ハッシュを作成しています。MD5ハッシュは、varchar2としてデータベースに保存されます。ローカルラップトップのTomcatサーバーでユーザーを作成するためのテストを行いました。Linux Redhat上のテストTomcatサーバーにwarをデプロイしたとき、ハッシュが一致しないために認証が失敗しました。ユーザー名とパスワードを確認しました。すべて正しいです。両方のWebサーバーが同じデータベースを指しています。
ローカルラップトップで生成されたハッシュは、テストサーバーで生成されたハッシュとは異なると思われます。私は正しいですか?
以下は、ハッシュを生成するために使用したコードです。
public static String getMD5Hash(String str) throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
return new String(md.digest());
}
返された文字列は、以下に定義されているデータベーステーブルに保存されます。
create table authen(
passport varchar2(50),
constraint pk_au primary key (passport) USING INDEX TABLESPACE xxxxxxx
);
これが私のラップトップでのJavaバージョンの出力です
C:\Users\XXXX>java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)
これがredhatサーバーでのJavaバージョンの出力です
[xxxxxx@xxxxxxxxx ~]$ java -version
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)