0

我在站点 auth上有 Javascript md5 。

我只需要实现这个功能:

function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}

我需要以下方法的帮助:

将 little-endian 单词数组转换为十六进制字符串:

function binl2hex(binarray)
{
  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
  var str = "";
  for(var i = 0; i < binarray.length * 4; i++)
  {
    str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
           hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
  }
  return str;
}

将字符串转换为 little-endian 单词数组 如果 chrsz 是 ASCII,则 >255 的字符会被忽略其高字节。

function str2binl(str)
{
  var bin = Array();
  var mask = (1 << chrsz) - 1;
  for(var i = 0; i < str.length * chrsz; i += chrsz)
    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
  return bin;
}  
4

2 回答 2

1

如果你只是想实现 MD5,那是 java 内置的东西。

https://stackoverflow.com/a/415971/576519

于 2012-08-10T18:47:59.300 回答
0

我开发了一个与标准 JavaScript 函数兼容的简单 Java MD5 函数,您可以从以下网址下载该类:http: //developersfound.com/HexMD5.zip

这是代码:

/* This MD5 hash class is compatible with the JavaScript MD5 has code found at http://pajhome.org.uk/crypt/md5/md5.html */
package com.DevFound;

import java.security.MessageDigest;

public class HexMD5 {
    public static String getMD5Str(String inputVal)throws Exception
    {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(inputVal.getBytes());

        byte byteData[] = md.digest();

        //convert the byte to hex format method 1
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < byteData.length; i++) {
            sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
        }

        //convert the byte to hex format method 2
        StringBuffer hexString = new StringBuffer();
        for (int i=0;i<byteData.length;i++) {
            String hex=Integer.toHexString(0xff & byteData[i]);
            if(hex.length()==1) hexString.append('0');
            hexString.append(hex);
        }
        return hexString.toString();
    }
}

我尚未使用您的特定 JavaScript md5 函数测试此代码,但我已在代码顶部的注释中列出了它兼容的函数。

于 2014-03-05T03:16:18.580 回答