我正在使用 java 消息摘要创建用于身份验证的 MD5 哈希。MD5 哈希作为 varchar2 存储在数据库中。我做了一个测试,在本地笔记本电脑上的 tomcat 服务器上创建一个用户。当我将war部署到linux redhat上的测试tomcat服务器时,由于哈希不匹配,身份验证失败。我检查了用户名和密码:它们都是正确的。两个 Web 服务器都指向同一个数据库。
我怀疑在我的本地笔记本电脑上生成的哈希值与测试服务器生成的哈希值不同。我对吗?
下面是我生成哈希的代码。
public static String getMD5Hash(String str) throws Exception
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
return new String(md.digest());
}
返回的 String 将保存在数据库表中,该表定义如下
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)