我怀疑在我的本地笔记本电脑上生成的哈希值与测试服务器生成的哈希值不同.我对吗?
下面是我生成哈希的代码.
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)
这可能是您看到不同结果的原因.否则,它不可能产生不同的结果.
例如 –
byte[] bytesOfMessage = tempStr.getBytes("UTF-8"); // Maybe you're not using a charset here MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] theDigest = md5.digest(bytesOfMessage);