Crypter un fichier à l’aide de l’algorithme ‘SHA digest’

Author:

 int,string,static, java
{filelink=19}

import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;

public class ExCryptageDigest
{
 /*
  *  Lire un fichier
  *  Crypter le fichier avec
  *  l'algorithme de chiffrage
  */
  public static void main(String[] args)
   throws IOException, GeneralSecurityException {

    String fichier = "c:/test.txt";  // Le fichier à crypter
    String password = "sakoba2008";  // Le mot de passe(8 caractères minimum)

    if (password.length() < 8 )
    {
      System.err.println("Mot de passe trop court");
    }

    FileInputStream fin = new FileInputStream(fichier);
    FileOutputStream fout = new FileOutputStream(fichier +".des");
    FileOutputStream fichier_digest = new FileOutputStream(fichier + ".des.digest");

    // Créer la clé à partir de mot de passe.
    byte[] desKeyData = password.getBytes();
    DESKeySpec desKeySpec = new DESKeySpec(desKeyData);
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
    SecretKey desKey = keyFactory.generateSecret(desKeySpec);

    // Chiffrer les données.
    Cipher des = Cipher.getInstance("DES/ECB/PKCS5Padding");
    des.init(Cipher.ENCRYPT_MODE, desKey);
    CipherInputStream cin = new CipherInputStream(fin, des);

    // Appliquer l'algorithme 'SHA digest'.
    MessageDigest sha = MessageDigest.getInstance("SHA");
    DigestInputStream din = new DigestInputStream(cin, sha);

    byte[] input = new byte[64];
    while (true) {
      int bytesRead = din.read(input);
      if (bytesRead == -1) break;
      fout.write(input, 0, bytesRead);
    }

    fichier_digest.write(sha.digest());
    fichier_digest.close();
    din.close();
    fout.flush();
    fout.close();
  }
}

Leave a Reply

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