Hankerrank的一道题,说实话我真不知道MD5的详细算法,包括字节转化为32位输出,在网上看到了好几个版本。我这里只写了一种,勉强可以理解。
import java.io.*;
import java.security.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
String s = new Scanner(System.in).next();
MessageDigest md = null;
byte[] buff;
String st;
StringBuffer sb= new StringBuffer();
try{
md = MessageDigest.getInstance("MD5");
md.update(s.getBytes());
buff = md.digest();
int digital;
for(int i=0;i<buff.length;i++){
digital = buff[i];
if(digital<0)digital+=256;
if(digital<16)sb.append("0");
sb.append(Integer.toHexString(digital));
}
}catch(Exception e){}
System.out.println(sb.toString());
}
}
参考自:http://www.weixuehao.com/archives/474