我不知道如何实现从php到java的这几行。
$varInHex = "\x22\x33\xAd\xB5\x2b\xE6\x22\x33\x12\x36\x22\x31\xCA\x22\x11\x41\x62\x21\x22\x01\x55\x22\x71\x42\x10\x36";<br/><br/> $result = md5($varInHex); echo $result;
好吧,我尝试将其转换,但是得到了不同的结果!
byte[] seq20 = new byte[]{(byte)0x22,(byte)...etc...}; String str = seq20.toString(); String result = md5(str); System.out.println(result); public static String md5(String source) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] bytes = md.digest(source.getBytes("UTF-8")); return getString(bytes); } catch (Exception e) { e.printStackTrace(); return null; } } private static String getString(byte[] bytes) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < bytes.length; i++) { byte b = bytes[i]; String hex = Integer.toHexString((int) 0x00FF & b); if (hex.length() == 1) { sb.append("0"); } sb.append(hex); } return sb.toString(); }
java中的结果不同于php中的结果。
你能帮我吗??先感谢您 :)
您不能在不将其转换为字符串的情况下直接使用seq20吗?我会这样:
md.update( seq20 ); byte[] md5sum = md.digest(); BigInteger bigInt = new BigInteger(1, md5sum); output = bigInt.toString(16); while ( output.length() < 32 ) { output = "0"+output; }