/* * utilis pour crer un fichier. Chk qui contient un checksum MD5 d'un fichier donn.
* Le mme programme est utilis pour vrifier si un fichier a t modifi en regardant * gnr prcdemment. *Chk et compare avec la somme de contrle en cours du fichier donn. */ package Dao; import java.security.*; import java.io.*; public class Checksum { // // returns 0 error // 1 ok (create) // 1 same (check) // 2 different (check) // public static void main(String args[]) { if (args.length == 2) { if (args[0].equals("create")) { System.exit(new Checksum().create(args[1])); } else if (args[0].equals("check")) { System.exit(new Checksum().check(args[1])); } } else { System.out.println("Usage : java Checksum create [filename]\n"+ " java Checksum check [filename]"); } } public int create(String filename){ try { byte[] chk = createChecksum(filename); File f = new File(filename + ".chk"); OutputStream os = new FileOutputStream(f); os.write(chk); os.close(); return 1; } catch(Exception e) { e.printStackTrace(); return 0; } } public int check(String filename){
int rc = 0; try { byte[] chk1 = createChecksum(filename); byte[] chk2 = new byte[chk1.length]; File f = new File(filename + ".chk"); InputStream is = new FileInputStream(f); is.read(chk2); if (new String(chk2).equals(new String(chk1))) { System.out.println("Same!"); rc = 1; } else { System.out.println("Different!"); rc = 2; } is.close(); return rc; } catch(Exception e) { e.printStackTrace(); return rc; } } public byte[] createChecksum(String filename) throws Exception{ InputStream fis = new FileInputStream(filename); byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); int numRead; do { numRead = fis.read(buffer); if (numRead > 0) { complete.update(buffer, 0, numRead); } } while (numRead != -1); fis.close(); return complete.digest(); } }
/*Condenss MD5 ont t largement utiliss dans le monde du logiciel pour fournir une * certaine assurance que le fichier tlcharg n'a pas t modifi. Un utilisateur * peut comparer une somme MD5 avec publie le checksum d'un fichier tlcharg.*/ package Dao; import java.io.*; import java.security.MessageDigest; public class MD5Checksum { public static byte[] createChecksum(String filename) throws Exception { InputStream fis = new FileInputStream(filename); byte[] buffer = new byte[1024]; MessageDigest complete = MessageDigest.getInstance("MD5"); int numRead; do { numRead = fis.read(buffer); if (numRead > 0) { complete.update(buffer, 0, numRead); } } while (numRead != -1); fis.close(); return complete.digest(); } // see this How-to for a faster way to convert // a byte array to a HEX string public static String getMD5Checksum(String filename) throws Exception { byte[] b = createChecksum(filename); String result = ""; for (int i=0; i < b.length; i++) { result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 ); } return result; } public static void main(String args[]) { try { System.out.println(getMD5Checksum("C:\\Users\\hajar\\Desktop\\index.jpg")); // output : // 0bb2827c5eacf570b6064e24e0e6653b // ref : // http://www.apache.org/dist/ // tomcat/tomcat-5/v5.5.17/bin // /apache-tomcat-5.5.17.exe.MD5 // 0bb2827c5eacf570b6064e24e0e6653b *apache-tomcat-5.5.17.exe } catch (Exception e) { e.printStackTrace(); } } }
/*MD5 (Message-Digest Algorithm 5) est largement utilis fonction de hachage * cryptographique avec une valeur de 128 bits de hachage. Spcifi dans la * RFC 1321, * MD5 fait partie d'une srie d'algorithmes Message Digest conus par le professeur * Ronald Rivest du MIT (Rivest, 1994). Aujourd'hui MD5 a t employ dans une grande * varit d'applications de scurit, et est galement dans le monde entier permet * de vrifier l'intgrit des fichiers */ package Dao; import java.math.BigInteger; import java.security.*; import sun.security.provider.MD5; public class MD5teste { public static String getMD5(String input) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] messageDigest = md.digest(input.getBytes()); BigInteger number = new BigInteger(1, messageDigest); String hashtext = number.toString(16); // Now we need to zero pad it if you actually want the full 32 chars. while (hashtext.length() < 32) { hashtext = "0" + hashtext; } return hashtext; } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } } public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println(getMD5("index.jpg")); System.out.println(""); System.out.println(getMD5("t.txt")); } }