private void addExtendInfo () {
byte[] auth_info = md5(userid+passwd+email+current_time);
} private byte[] md5(String s) {
try {
java.security.MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
return digest.digest();
} catch (java.security.NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}我打印 auth_info 这个值 发现他是 %3Fyb%B9%D8%3Ffq%3F%3F%3F
这样的,可是在我印象中MD5加密后应该是 937c005be307cfea0d7b0d1e2fc031e7请大家帮我看下我应该怎么改才让他显示下面的这样的,我不要上面的这样的,因为这个md5是发到别人的服务器去验证的,人家那头我改不了
byte[] auth_info = md5(userid+passwd+email+current_time);
} private byte[] md5(String s) {
try {
java.security.MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
return digest.digest();
} catch (java.security.NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}我打印 auth_info 这个值 发现他是 %3Fyb%B9%D8%3Ffq%3F%3F%3F
这样的,可是在我印象中MD5加密后应该是 937c005be307cfea0d7b0d1e2fc031e7请大家帮我看下我应该怎么改才让他显示下面的这样的,我不要上面的这样的,因为这个md5是发到别人的服务器去验证的,人家那头我改不了
public class MD5Util { private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
} private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
} public static String Encode(String origin) {
String resultString = null; try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
} catch (Exception ex) { }
return resultString;
} public static void main(String[] args) {
System.err.println(Encode("BEST"));
}
}
public static String MD5(String str){
StringBuffer buf = new StringBuffer("");
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte b[] = md.digest(); int i;
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if(i<0) i+= 256;
if(i<16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return buf.toString();
}
for(int i = 0; i < b.length; i++) {
int bb = b[i] & 0xFF;
System.out.print(bb < 16 ? ("0" + Integer.toHexString(bb)) : Integer.toHexString(bb));
}
把得到的byte[] 转换成16进制 就是你要的了