Chiffrage partiel de fichiers

Soyez le premier à donner votre avis sur cette source.

Vue 4 298 fois - Téléchargée 539 fois

Description

Une ptt application permet a l'utilisateur de sélectionner un bloc d'un chier texte et de ne chi er que ce bloc.Cette même application devra permettre à un utilisateur possédant la clé de lire l'intégralité du chier
et à un utilisateur ne possédant pas la clé de lire la partie apparaissant en clair.

Source / Exemple :


package ProjetCrypto;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class Chiffrage {
    private SecretKey key;
    private Cipher decryptor;
    private Cipher encryptor;
    byte[] buf = new byte[1024];
    
    public Chiffrage()
    {
    	key = null;
    	decryptor = null;
    	encryptor = null;
    }
    
    public Cipher setKeyCrypt(String pwd)
    {
    	key = new SecretKeySpec(pwd.getBytes(),"Blowfish");
    	try {
			encryptor = Cipher.getInstance("Blowfish");
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	try {
			encryptor.init(Cipher.ENCRYPT_MODE, key);
		} catch (InvalidKeyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	return encryptor;
    }
    
    public Cipher setKeyDecrypt(String pwd) 
    {
    	key = new SecretKeySpec(pwd.getBytes(),"Blowfish");
    	try {
			decryptor = Cipher.getInstance("Blowfish");
		} catch (NoSuchAlgorithmException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NoSuchPaddingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	try {
			decryptor.init(Cipher.DECRYPT_MODE, key);
		} catch (InvalidKeyException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	return decryptor;
    }
    
    public Cipher getKeyCrypt()
    {
    	return encryptor;
    }
    
    public Cipher getKeyDecrypt()
    {
    	return decryptor;
    }
    
    public void encryptFile(File inFile, File outFile, Cipher cipher) throws IOException, GeneralSecurityException
    {
		InputStream in = new BufferedInputStream(
				new FileInputStream(inFile));
		OutputStream out = new BufferedOutputStream(
				new FileOutputStream(outFile));

		int nl; //nbr d'octets réellement lus
		byte[] buffer = new byte[1024];
		while((nl = in.read(buffer)) != -1)
		{
			out.write(cipher.update(buffer,0,nl));
		}
		
		out.write(cipher.doFinal());
		out.flush(); //fermer le flux et écrir dans le fichier
		in.close();
		out.close();
    }
    
    public void encryptFile(String inFileName, String outFileName,Cipher cipher) throws IOException, GeneralSecurityException
    {
    	encryptFile(new File(inFileName), new File(outFileName), cipher);
    }
    
    public void decryptFile(File inFile, File outFile, Cipher cipher) throws IOException
    {
		InputStream in = new BufferedInputStream(
				new FileInputStream(inFile));
		OutputStream out = new BufferedOutputStream(
				new FileOutputStream(outFile));
		//les bytes a lu dans le in qui va décrypter
		in = new CipherInputStream(in, cipher);
		
		//lire in en décrypter et ecrire dans la sortie
		int numRead = 0;
		while((numRead = in.read(buf)) >= 0)
		{
			out.write(buf, 0, numRead);
		}
		in.close();
		out.close();
		
    }
    
    public void decryptFile(String inFileName, String outFileName, Cipher cipher) throws IOException
    {
    	decryptFile(new File(inFileName), new File(outFileName), cipher);
    }

}

Conclusion :


Je travaille avec une composant "Visual Editor" de eclipse 3.2

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
dimanche 7 mars 2004
Statut
Membre
Dernière intervention
26 mars 2009

Moi aussi je préfère chier qu'un seul bloc à la fois !
Messages postés
3
Date d'inscription
mercredi 1 novembre 2006
Statut
Membre
Dernière intervention
24 février 2009

un bug d'affichage pour la description sur la site source code
Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014

oki pour la source, ca fait moins de ligne mais change aussi la description
Messages postés
3
Date d'inscription
mercredi 1 novembre 2006
Statut
Membre
Dernière intervention
24 février 2009

ok, merci
Messages postés
215
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
10 mars 2014

slt
ta description est incorrecte, il manque des bouts de mots, change ca
et sinon inutile de mettre le code entier 1600 lignes, mets en qu'une partie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.