Cryptage d'un fichier

evguim -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
S'il vous plait je voudrais savoir comment crypter un fichier vidéo en java.
Merci d'avance.
A voir également:

2 réponses

ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
'lut, avant touche chose, tu comptes le crypter avec quel algorithme? XOR, Triple-DES, autre?
0
evguim
 
je veux le crypter avec Triple-DES.
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
Pour crypter avec du Triple DES, il faut mettre en place le moteur de cryptage et la clé utilisée. Pour ce faire, il faut une
javax.crypto.SecretKey
, avec la classe
javax.crypto.KeyGenerator
par exemple:
SecretKey cle = KeyGenerator.getInstance("DESede").generateKey();

Si tu veux pouvoir décrypter la vidéo, il faut sauvegarder la clé quelque part; pour faire court je vais omettre cette partie, mais tu peux te servir des fonctions
readKey
et
writeKey
dispo sur l'exemple de chez Java2S.
Une fois un
FileInputStream
et
FileOutputStream
ouvert pour la source et la destination respectivement, on peut crypter:
Cipher cryptp = Cipher.getInstance("DESede");
crypto.init(Cipher.ENCRYPT_MODE, cle);
// Un CipherOutputStream fait une partie du travail a notre place
CipherOutputStream cos = new CipherOutputStream(streamFichierSortie, crypto);

byte[] buffer = new byte[4096];
int octetsLus;
while ((octetsLus = streamFichierSource.read(buffer)) != -1) {
	cos.write(buffer, 0, octetsLus);
}
cos.close();
Pour décrypter il faut utiliser
Cipher.DECRYPT_MODE
dans
crypto.init
et faire la lecture/écriture dans l'autre sens:
byte[] buffer = new byte[4096];
int octetsLus;
while ((octetsLus = streamFichierSource.read(buffer)) != -1) {
	streamFichierSortie.write(crypto.update(buffer, 0, octetsLus));
}

// On écrit les derniers octets
streamFichierSortie.write(cipher.doFinal());
0
evguim
 
Merci beaucoup pour votre réponse. Mais je voudrais vous exposer tout mon problème afin que vous puissiez m'apporter votre aide davantage.
Je suis débutant en programmation. Et j'ai besoin de mettre en place un didacticiel et je vais moi même installer le didacticiel dans le poste de l'utilisateur qui va l'utiliser sans se connecter à un réseau. Mais je veux que la seule possibilité pour ouvrir la vidéo soit de passer par l'interface du didacticiel. Donc l'utilisateur ne doit pas pouvoir copier la vidéo pour la regarder ailleurs. C'est pour cela que l'on m'a conseillé de crypter la vidéo et la décrypter à la volée. Mais je ne connait vraiment pas cette technique. C'est pourquoi j'ai besoin de votre aide.
Merci d'avance.
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223 > evguim
 
D'ailleurs tu aurais pu continuer sur la première discussion.
Pour arriver a tes fins, il suffit de crypter la vidéo qui sera fournie avec le logiciel en utilisant une clé qui sera incluse dans le programme lui-même. Quand le didacticiel se lancera, il décryptera la vidéo en mémoire pour la jouer, toujours avec cette même clé.
0
evguim > ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention  
 
Qu'est ce qui se passera si l'utilisateur va dans le répertoire qui contient la vidéo pour la copier et la jouer ailleurs ? Supportez moi je vous en prie.
0
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223 > evguim
 
Il verra le fichier mais sera incapable de la lire avec quelque lecteur média que ce soit s'il ne décrypte pas la vidéo avant, ce qui nécessitera un outil de décryptage et la clé présente dans le logiciel, qui bien qu'elle puisse être obtenue relativement facilement (le Java, tu claques des doigts et pouf c'est décompilé), nécessite d'aller la chercher.
0