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

Langage Java Discussion :

[Language]cryptage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut [Language]cryptage
    Bonjour je voulais savoir si vous connaissiez des algos de cryptage ou des site parlant sérieusement de ceci.
    J'ai fais un 1er algo mais vraiment basic et je voudrez l'améliorer

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    import java.io.*;
    public class Crypter
    {
     public static void main(String [] arg)
     {
      String chaine = "a%$£89éèê&+dijklmeVfgoEhnFGvwxùûµ~#(HIbc7Jstu) MpqrNOPQRSTU3456-=*/âBAKL[àäCDïîö]WX12ç@{yzôYZ0ü}" ;
     
      int lChaine = chaine.length()-1;
      int lu,posChaine ;
      char Car,CarChaine;
     
      System.out.print("Entrez le nom du fichier a crypter : ");
      String Fichier = Lire.S();
     
      System.out.print("Entrez la clef de cryptage : ");
      int clef = Lire.i();
     
      try
      {
     
       FileReader F = new FileReader(Fichier);
       FileWriter FC = new FileWriter( "C" + Fichier);
     
       lu = F.read();
     
       while(lu != -1)
       {
    	Car = (char) lu;
        posChaine=0;
        CarChaine = chaine.charAt(posChaine);
     
        while(posChaine<lChaine && CarChaine != Car)
        {
    	 posChaine++;
    	 CarChaine = chaine.charAt(posChaine);
    	}
     
    	if(CarChaine == Car )
    	{
    	 if(posChaine+clef>lChaine)
    	 {
    	  CarChaine = chaine.charAt(lChaine%posChaine);
    	  FC.write(CarChaine);
         }
         else
         {
    	  CarChaine = chaine.charAt(posChaine+clef);
    	  FC.write(CarChaine);
    	 }
        }
        else { FC.write(Car); }
     
       lu = F.read();
       }
     
       F.close();
       FC.close();
      }
      catch ( Exception e ) { System.out.println("Erreur "); }
     }
    }
    merci de votre aide

  2. #2
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    lut !

    J'ai déjà fait une petite recherche la dessus, le mieux que j'ai trouvé, je l'ai eu dans les bouquins ou magazines spécialisés, les sites internet sont soit trop basiques soit trop techniques mais j'ai trouvé peu d'explications...
    Si tu veux faire un programme de cryptage, le mieux c'est d'utiliser ce qui existe déjà : voir sources java du site developpez.com.

  3. #3
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    'jour,

    J'ai fais un projet en maitrise qui concerne le cryptage. Si tu veux quelques infos sur des méthodes assez simples à mettre en oeuvre et malgrè tout efficaces, voilà l'addresse :

    http://cryptofans02.free.fr/

    dans le menu méthodes de cryptage.

  4. #4
    Membre éclairé Avatar de sorry60
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 802
    Par défaut
    Citation Envoyé par vincent63
    'jour,

    J'ai fais un projet en maitrise qui concerne le cryptage. Si tu veux quelques infos sur des méthodes assez simples à mettre en ouvre et malgrè tout efficaces, voilà l'addresse :

    http://cryptofans02.free.fr/

    dans le menu méthodes de cryptage.
    Super sympa ton site bravo
    Moi aussi je mettais conçu un petit log de cryptage-decryptage (avec borland c++ builder), il y avait à l'epoque : cesar, chiffrement de hill.
    RSA est sympa aussi à programmer.

    Bon courage

  5. #5
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    Salut vincent 63,

    j'ai regardé ton site qui est bien fait !!
    J'ai des petites remarques :
    avec ces méthodes de cryptage présentée, comment cryptes tu les caractères : &é"'(-è_çà)=,;:!*ù$^ et puis tous les autres... ?
    De ce que j'ai retenu de mes lectures sur le web, ces méthodes sont relativement simples pour un programmeur à "cracker". Il existe des méthodes beaucoup plus complexes faisant intervenir des nombres aléatoires... ce qui semble plus sûr du point de vue sécurité.

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    avec ces méthodes de cryptage présentée, comment cryptes tu les caractères : &é"'(-è_çà)=,;:!*ù$^ et puis tous les autres... ?
    Une méthode parmis d'autres : tu encodes d'abord ta chaine en base 64. puis tu cryptes la chaine obtenue. Appliquer la méthode inverse à la reception : décryptage puis décodage.

    Bien qu'il soit assez ancien, le bouquin "PGP : Pretty Good Privacy" chez O'Reilly ISBN 1-56592-098-8 est une bonne source d'info également sur le crypag et les méthodes de génération de paires de clés publiques/privées en général ; et PGP en particulier bien sur.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    astucieux... mais le gros inconvénient c'est que tu alourdis de 30% ta chaines de caractères, c'est pas génial pour les gros textes... a moins de zipper...

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tout à fait, mais d'autre solutions plus ou moins dans le même style doivent exister pour échapper ce genre de charactères.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    Je pense qu'en agrandissant ton alphabet tout simplement :
    abcde...z&é"'(-è_çà)=,;:!ù*^$1234567890 ... ... tu peux utiliser les mêmes méthodes...

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ca va pas, Java Cryptography Architecture ? http://java.sun.com/j2se/1.4.2/docs/...ryptoSpec.html

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut
    Re bonjour je tente de crypter maintenant en rentran en me servant d'un fichier text(clef) externe au programme mais j'ai un petit problème :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
      int lu,cleflu;
      int sommeCar;
      char carcode;
     
      try
      {
       FileReader F = new FileReader("toto.txt");
       FileReader C = new FileReader("clef.txt");
       FileWriter FC = new FileWriter("C"+"toto.txt");
     
       lu = F.read();
       cleflu = C.read();
     
       while(lu!=-1)
       {
         if(cleflu==-1)
         {
     
         }
     
         sommeCar = lu+cleflu;
         if(sommeCar>255)
         {
           sommeCar = 255%sommeCar;
         }
         System.out.println (sommeCar + " => " + cleflu + " + " + lu);
         carcode = (char) sommeCar;
         FC.write(carcode);
     
         lu = F.read();
         cleflu = C.read();
       }
     
     
       F.close();
       FC.close();
       C.close();
      }
      catch (Exception e)
      {
       System.out.println("Erreur ");
      }
    Voilà comment le problème si jamais mon fichier clef est terminer,
    comment retourner au début de celui-ci pour continué a crypter correctement ? merci

  12. #12
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Salut,

    Super sympa ton site bravo

    j'ai regardé ton site qui est bien fait !!
    Merci, mais rendons à César ce qui lui appartient, je n'ai que partiellement contribué au site, j'ai surtout développé l'application...
    Mais promis, je transmettrai vos compliments à son auteur

    avec ces méthodes de cryptage présentée, comment cryptes tu les caractères : &é"'(-è_çà)=,;:!*ù$^ et puis tous les autres... ?
    En fait, tu as trouvé la réponse.
    Il suffit de définir un ensemble de caractères correspondant à ceux
    que tu veux utiliser du coup tu peux travailler avec un alphabet plus grand.

    De ce que j'ai retenu de mes lectures sur le web, ces méthodes sont relativement simples pour un programmeur à "cracker".
    C'est vrai. Cest algos sont plutôt faciles à casser (enfin, pour vigenère, si la clé est bien choisie, ça complique un peu).
    Mais ils peuvent servir de base à maminova.

    Surtout que si individuellement, ils sont simples à casser, la combinaison de plusieurs de ces algos doit considérablement compliquer les choses.

    Pour les méthodes plus poussées, j'imagine qu'il y a des API qui proposent des algos plus compliqués à base de clé public, clé privée etc...

    voir par exmple : JCE
    http://java.sun.com/products/jce/index.jsp

  13. #13
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    Voilà comment le problème si jamais mon fichier clef est terminer,
    comment retourner au début de celui-ci pour continué a crypter correctement ? merci
    A mon avis, il te suffit de charger ton fichier dans un string et tu parcours la chaine de caractères. Une fois à la fin, tu reprends au début.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 27
    Par défaut
    NOn pas possible
    clef => 613 caractèress
    le texte à crypter => 2711caractère

  15. #15
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Ma modeste contribution:
    http://fxgroup.club.fr/soft/index.html

    Pour en savoir plus:
    http://blog.lescampeurs.net/?2005/08/08/15--cryptologie-algorithme-a-double-cles-symetriques

  16. #16
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    Citation Envoyé par Regis.C
    Ma modeste contribution:
    http://fxgroup.club.fr/soft/index.html

    Pour en savoir plus:
    http://blog.lescampeurs.net/?2005/08/08/15--cryptologie-algorithme-a-double-cles-symetriques
    C'est intéressant, mais je répète ce que j'ai dit plus haut : le gros inconvéniant c'est que tu alourdis ton message si j'ai bien compris
    ex: bonjour -> 6NO.N3.HE.HN3.8SI.6A.NT.NT.6A.TKH, il y a quasiment un 5x plus de caractères !!! Sans casser ton travail, ça perd un peu son intérêt , sans parler de la surchauffe de ton PC après avoir fait un tel boulot !! tu peux rajouter des passages de la bible aussi tant que tu y es !!!

  17. #17
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut

    Oui, c'est clair que le cryptogramme est plus long que le message clair.

    En réalité, le message est crypté 3 fois (pour les messages textuel).
    Source>cryptogramme1 avec clé1
    cryptogramme1>cryptogramme2 avec clé2
    cryptogramme2>cryptogramme3 avec clé generée par clé1 et clé2.

    Mais par contre le cassage en devient carrément une prise de tête...

    Pour ce qui est des fichiers, cela allourdis le fichier crypté, mais c'est relativement cours en calcul (environ 1 minutes pour un fichier .doc de 100 à 200 Ko avec wordArt, titres et sous-titres et mise en page).

    Quoi qu'il en soit, je ne fait pas de "promo" pour mon soft que j'ai fait dans un pur plaisir de geek, mais vu qu'on parlais cryptage...

  18. #18
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Mais tu peux compresser ton message apres l'avoir encrypte. C'est du texte, et apparement avec beaucoup de caracteres redondant ca se compresse tres bien ! Evidement... ca prend plus de temps CPU et/ou de memoire.

    C'est comme tout, il n'y a pas de solutions magique . Il doit y avoir une taille moyenne des messages/paquets pour lesquelle encodage + ecryptage + compression prennent un temps moyen ideal et ne produisent pas des trucs trop gros (idem pour les methodes inverses) suivant la puissance du/des CPU(s). Pour une appli/utilisation commercial "serieuse"*, le seul moyen de trouver c'est de tester pas mal de valeurs et d'en tirer des stats.

    *Et encore... seules les grosses boites le font vraiment.

    C'est en gros pareil pour l'envoie de paquets sur le reseau. La plupart des piles TCP/IP ont des taille de paquets par defaut suffisante pour une utilisation courante. Dans certains cas (RARES) on peut est ammemer a bidouiller ces valeurs pour des usages specifiques. Idem pour les durees des timeout, les tailles de buffer pour operations I/O, les dimensions des tiles lors de manipulations d'images...... que sais-je encore.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  19. #19
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    il me semble que la plupart des programmes de crypt travaillent directement sur les byte sans passer par les caractères ce qui me semble-t-il aboutit à encore plus de possibilités pour le message crypté et il devient encore moins "lisible". Avec un tel prog je crypte environ 300ko/s.

    Mais je ne doute pas que pour cracker un texte crypté avec ton algo Régis.C c'est pas de la tarte ! Le gros avantage c'est qu'avec un même message tu as plusieurs messages cryptés différents c'est dèjà pas mal puisque la méthode brute n'est pas franchement appliquable.
    Tu as testé ton algo avec des chaînes répétitives genre "aaa..aaaaaaaa" pour voir la redondance du message crypté ?

  20. #20
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par FFF
    Tu as testé ton algo avec des chaînes répétitives genre "aaa..aaaaaaaa" pour voir la redondance du message crypté ?
    Oui, à la fin du blog on peut lire:
    J'ai aussi une optimisation de la "consolidation" :
    un message en clair égal à "aaaaaa" ne donne jamais un cryptogramme ayant une redondance, mais un truc du genre:
    2NT.6O24.6A.NO.MZ6A.HO6A.SI.12.6A.22.24.A6A.37.W6A.F33.6A.NT.ZE.6A.
    ainsi que:

    je me suis amusé à tester les perf de mon application de cryptographie "perso" depuis la première version (1 clé privée) jusqu'à la dernière version (double clé privée + subtilités diverses..).

    Pour cela, j'ai simplement codé un message composé de la lettre "c" avec comme clés symétriques "a" et "b".
    Voici ce qu'il en ressort :


    version 1.0 (1 clé):
    5000 tests de cryptage.
    13 messages cryptés différents sur 5000 essais soit 4987 doublons

    version 2.0 (2 clés symétriques, version expliquée dans le blog des campeurs):
    5000 tests de cryptage.
    529 messages cryptés différents sur 5000 essais soit 4471 doublons

    version 4.32 (dernière versions):

    - 5000 tests de cryptage.
    4987 messages cryptés différents sur 5000 essais consécutifs.

    - 10 000 tests de cryptage.
    9 938 messages cryptés différents sur 10 000 essais consécutifs.

    - 30 000 tests de cryptage.
    29 456 messages cryptés différents soit 544 doublons sur 30 000 essais consécutifs pour la simple lettre "c" !

    Je me suis arreté à 30 000 essais car je pense que j'ai encore de la marge avant d'arriver aux limites du nombre de messages cryptés différents possibles.
    Sachant que le message en clair pour ces tests n'était composé que d'une seule lettre, et que le nombre de combinaisons possible devient considérable avec 1 mots, et carrément dingue avec plusieurs mots.
    L'idée de compresser le résultat du cryptage m'interesse...
    Peut-on m'en dire plus ?
    Quel type de compression ?

Discussions similaires

  1. Cryptage de fichier
    Par :GREG: dans le forum Composants VCL
    Réponses: 6
    Dernier message: 18/12/2008, 09h43
  2. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  3. [Appli][Autre language]dll-contenant form
    Par flash dans le forum Langage
    Réponses: 6
    Dernier message: 20/09/2002, 14h18
  4. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32
  5. Cryptage en C selon la méthode de césat
    Par shenron dans le forum C
    Réponses: 2
    Dernier message: 31/05/2002, 08h22

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