站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题如何计算MD5的值?

如何计算MD5的值?

摘要: 如何计算MD5的值?



请看以下代码,好像不行,问题在哪?谢谢!

import java.security.*;

class t3
{public static void main(String args[])
{try
{MessageDigest md=MessageDigest.getInstance("MD5");
byte c[],b[]=new byte[100]; int i;
for(i=0;i<100;i++) b[i]=(byte)i;
c=md.digest(b); System.out.println(new String(c));
}
catch(Exception e) {System.out.println(e.toString());}
}
}



import java.security.*;

class t3{
private final static String[] hexDigits = {
"0", "1", "2", "3", "4", "5", "6", "7",
"8", "9", "a", "b", "c", "d", "e", "f"};

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 void main(String args[]){
try{
MessageDigest md=MessageDigest.getInstance("MD5");
byte c[],b[]=new byte[100];
int i;

for(i=0;i<100;i++) b[i]=(byte)i;

c=md.digest(b);

StringBuffer resultSb = new StringBuffer();
for (i = 0; i < c.length; i++) {
resultSb.append(byteToHexString(c[i]));
}
System.out.println(resultSb);

}
catch(Exception e) {
//System.out.println(e.toString());
}
}
}


学习



原来如此,API里好象没说啊
谢谢zebra007(呼呼) !


你计算的结果没有问题,但是要显示出来给人看是另外一回事了
上面的方法也是前面人写的,我只是找出来而已,呵呵



public final static String MD5(String s){
char hexDigits[] = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e){
return null;
}
}


↑返回目录
前一篇: 如何罗列一组数的各种排列?
后一篇: 请教一个简单的多线程问题