Create a Checksum en Java

download Create a Checksum en Java

of 4

Transcript of Create a Checksum en Java

  • 7/31/2019 Create a Checksum en Java

    1/4

    /*

    * 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.*;

    publicclass Checksum {

    //

    // returns 0 error// 1 ok (create)

    // 1 same (check)

    // 2 different (check)

    //

    publicstaticvoidmain(String args[]) {

    if (args.length == 2) {

    if (args[0].equals("create")) {

    System.exit(new Checksum().create(args[1]));

    }

    elseif (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]");

    }

    }

    publicint 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;

    }

    }

    publicint check(String filename){

  • 7/31/2019 Create a Checksum en Java

    2/4

    int rc = 0;

    try {

    byte[] chk1 = createChecksum(filename);

    byte[] chk2 = newbyte[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;

    }

    }

    publicbyte[] createChecksum(String filename) throws Exception{

    InputStream fis = new FileInputStream(filename);

    byte[] buffer = newbyte[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();

    }

    }

  • 7/31/2019 Create a Checksum en Java

    3/4

    /*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;

    publicclass MD5Checksum {

    publicstaticbyte[] createChecksum(String filename) throws

    Exception

    {

    InputStream fis = new FileInputStream(filename);

    byte[] buffer = newbyte[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

    publicstatic 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;

    }

    publicstaticvoidmain(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();

    } } }

  • 7/31/2019 Create a Checksum en Java

    4/4

    /*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 mondeentier permet

    * de vrifier l'intgrit des fichiers

    */

    package Dao;

    import java.math.BigInteger;

    import java.security.*;

    import sun.security.provider.MD5;

    publicclass MD5teste {

    publicstatic 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) {

    thrownew RuntimeException(e);

    }}

    publicstaticvoidmain(String[] args) throws NoSuchAlgorithmException {

    System.out.println(getMD5("index.jpg"));

    System.out.println("");

    System.out.println(getMD5("t.txt"));

    }

    }