Décrypter un fichier chiffré avec l’algorithme ‘SHA digest’

Author:

 int,string,static, date, java
{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);
    }
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *