import java.io.*;
import java.security.*;

public class MD5 {
    public static void main (String[] args) {
	for (int i = 0; i < args.length; i++) {
	    md5 (args[i]);
	}
    }

    private static void md5 (String file) {
	try {
	    MessageDigest md = MessageDigest.getInstance("MD5");
	    File f = new File (file);
	    if (!f.exists ())
		return;
	    try {
		FileInputStream fis = new FileInputStream (f);
		byte[] buf = new byte[8 * 1024];
		int read = 0; 
		while ((read = fis.read (buf)) > 0) {
		    md.update (buf, 0, read);
		}
		fis.close ();
		byte[] d = md.digest ();
		for (int i = 0; i < d.length; i++) {
		    int v = d[i] & 0xff;
		    String s = Integer.toHexString (v);
		    if (s.length () < 2) {
			s = "0" + s;
		    }
		    System.out.print (s);
		}
		System.out.println ("\t" + file);
	    } catch (IOException e) {
		e.printStackTrace ();
	    }
	} catch (NoSuchAlgorithmException e) {
	    e.printStackTrace ();
	}
    }
}
