Я использую дайджест сообщения Java для создания хеша MD5, который используется для аутентификации. Хеш MD5 хранится в базе данных как varchar2. Я сделал тест, чтобы создать пользователя на моем сервере Tomcat на моем локальном ноутбуке. Когда я развернул войну на тестовом сервере Tomcat в Linux Redhat, аутентификация не удалась из-за несоответствия хеша. Я проверил имя пользователя и пароль: все они верны. Оба веб-сервера указывают на одну и ту же базу данных.
Я подозреваю, что хеш, сгенерированный на моем локальном ноутбуке, отличается от хеша, сгенерированного тестовым сервером. Я прав?
Ниже приведен код, с помощью которого я сгенерировал хеш.
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)
Вот вывод версии Java на сервере Redhat
[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)