{filelink=20}
import java.io.*;
import java.security.*;
import java.security.spec.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class ExDecryptageDigest
{
public static void main(String[] argv)
{
String fichier_Digest = "c:/test.txt.des.digest"; // Fichier à décrypter
String outfile = "test2.txt"; // Résultat de décryptage
String password = "sakoba2008"; // Le mot de passe
try {
FileInputStream fin = new FileInputStream(fichier_Digest);
FileOutputStream fout = new FileOutputStream(outfile);
// Créer la clé à partir du mot de passe.
byte[] desKeyData = password.getBytes();
DESKeySpec desKeySpec = new DESKeySpec(desKeyData);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey desKey = keyFactory.generateSecret(desKeySpec);
DataInputStream data_in = new DataInputStream(fin);
int ivSize = data_in.readInt();
byte[] iv = new byte[ivSize];
data_in.readFully(iv);
IvParameterSpec ivps = new IvParameterSpec(iv);
// Lire le contenu du fichier avec cryptage standard
Cipher des = Cipher.getInstance("DES/CBC/PKCS5Padding");
des.init(Cipher.DECRYPT_MODE, desKey, ivps);
byte[] input = new byte[64];
while (true) {
int bytesRead = fin.read(input);
if (bytesRead == -1) break;
byte[] output = des.update(input, 0, bytesRead);
if (output != null) fout.write(output);
}
byte[] output = des.doFinal();
if (output != null) fout.write(output);
fin.close();
fout.flush();
fout.close();
}
catch (GeneralSecurityException ex)
{
System.err.println("Erreur: "+ex);
}
catch (IOException ex)
{
System.err.println(ex);
}
}
}