• 将java messagedigest在不同的jdk版本上生成不同的MD5哈希?

    我正在使用 java消息摘要来创建MD5哈希,用于身份验证. MD5哈希作为varchar2存储在数据库中.我做了一个测试,在我的本地笔记本电脑上的tomcat服务器上创建用户.当我将战争部署到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)
    您可能正在使用默认字符集来生成要传递到MD5.digest()方法的字节,并且该笔记本和服务器之间的字符集不同.

    这可能是您看到不同结果的原因.否则,它不可能产生不同的结果.

    例如 –

    byte[] bytesOfMessage = tempStr.getBytes("UTF-8"); // Maybe you're not using a charset here
    MessageDigest md5 = MessageDigest.getInstance("MD5");
    byte[] theDigest = md5.digest(bytesOfMessage);
    相关文章
    相关标签/搜索
    4887铁筼结果开奖结果小说 岫岩| 元朗区| 台前县| 宜兰市| 建昌县| 伽师县| 祁门县| 临城县| 宝清县| 长汀县| 夏河县| 潜山县| 察隅县| 建德市| 镶黄旗| 乌审旗| 武宁县| 壤塘县| 丹棱县| 尼勒克县| 宣化县| 阿坝| 习水县| 垫江县| 唐海县| 台南市| 平顶山市| 临安市| 丹寨县| 太仆寺旗| 安仁县| 尉犁县| 延庆县| 昭通市| 麟游县| 陇南市| 呼伦贝尔市| http://fa.hz0j2r4vo.fun http://fa.hz0j2r0vo.fun http://fa.hz0j2r3vo.fun http://fa.hz0j2r3vo.fun http://fa.hz0j2r7vo.fun