IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Java Discussion :

[RSA] problème avec CipherOutputStream


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 114
    Par défaut [RSA] problème avec CipherOutputStream
    Bonjour,

    J'ai lu dans un post que RSA et CipherOutputStream ne fonctionnaient pas ensemble, or dans un livre de cours, j'ai vu un code permettant de crypter un fichier avec RSA. J'ai donc voulu essayer mais le fichier encrypté est vide. Avez-vous une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /** Encrypt a file **/
    String clearFile = in.readLine();
    String encrFile = "simpsons.ciphered";
    try {
    	FileInputStream fis = new FileInputStream( clearFile );
    	FileOutputStream fos = new FileOutputStream( encrFile );
    	CipherOutputStream cphout = new CipherOutputStream( fos, c );
    	byte [] byteBuff = new byte [ 8196 ];
    	int bytesRead = fis.read( byteBuff );
    	while ( bytesRead != -1 ) {
    		cphout.write( byteBuff, 0, bytesRead );
    		bytesRead = fis.read( byteBuff );
    	}
    	cphout.close ( );
    	fis.close ( );
    	fos.close ( );
     
    }
    catch( IOException iox ) {
    	System.out.println( iox );
    }

  2. #2
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    C'est moi qui ai posté en disant que c'était pas possible, et à ce jour je n'ai toujours pas trouvé la solution pour crypter directement en RSA (en pratique on en fera pas ça pour de grandes quantifés de données, c'est un algorithme assez lent, on utyilisera une techinque de key wrapping. Vas consulter mes posts dans la section Contribuez (postez vos sources), toutes les classes de vryptage, décrypatge pour plein d'algorithmes ont été faites.

  3. #3
    Membre éprouvé
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Par défaut
    Une solution serait de lire le fichier par paquet d'octet égal à la longueur de ta clé, et de les crypter un par un. J'ai jamais testé mais en théorie...

    Bonne chance.

  4. #4
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    J'ai déjà essayé et ça ne marche pas.

    Le truc c'estque comme tu le sais surement (et si pas maintenant tu le sais ;-) ) le cryptage est établi en trois étapes en Java.

    1. Création et initialisation de l'objet Cipher approprié (Cipher.getInstance(), cipher.init() ).

    2. Appel rigoureux à cipher.update() : tenir compte de la taille des blocs du cipher (varie en fonction de l'algorithme et de la taille de la clé), et de la taille de sortie (cipher.getBlockSize(), cipher.getOutputSize())

    3. Finalisation du cryptage avec Cipher.doFinal().

    Ces étapes (surtout la deuxième et la troisème) sont assez fastidieuses et dures à implémenter, et CipherIn/OutputStream rend transparent ces appels, avec les inconvéniants évoqués plus haut.

    J'ai personnelement développé une superclasse interessante qui a la même fonction (et qui jusqu'à présent fonctionne pour tous les algorithmes que j'ai utilisés), tu la trouvera ici, ainsi que des classes de cryptage et de sécurité sophistiquées postées également dans ce topic (elles sont un peu partout dans le topic (mises à jours et nouveaux posts) ).

  5. #5
    Membre éclairé Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Par défaut
    En l'occurence pour ton problème de cryptage de fichiers, j'ai fait une superclasse ici qu'étendent des classes de cryptage symétriques, RSA, PBE.

    Tu as maintenant tout ce qu'il faut pour résoudre ton problème ;-).

Discussions similaires

  1. Chiffrement RSA - Problème avec des caractères accentués
    Par HommeDeJava dans le forum Sécurité
    Réponses: 10
    Dernier message: 01/02/2012, 17h14
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo