Create a Checksum en Java
-
Upload
khalidihajar -
Category
Documents
-
view
222 -
download
0
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"));
}
}