Partage
  • Partager sur Facebook
  • Partager sur Twitter

Condition avec les éléments d'une ArrayList

Sujet résolu
    27 novembre 2016 à 15:26:32

    Bonjour a tous !

    Voici mon petit problème...

    J'ai une arrayList de byte de taille dynamique. (J'utilise les bytes pour avoir les caractères de la table ASCII).

    Et j'aimerais une condition qui dit :

    SI tous mes bytes de mon arrayList sont a la valeur 127 ALORS .... et mes instructions.
    Mon problème c'est que je ne sais pas comment prendre en compte tous les éléments de mon ArrayList pour cette condition.

    Quelqu'un a une petite idée ??

    merci de votre aide

    -
    Edité par Morin21 27 novembre 2016 à 15:27:41

    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2016 à 16:33:51

      Bonjour,
      Je ne comprends pas tous.
      127 en ASCII => C'est l'effacement, un fichier qu'avec des effacements, je n'ai jamais vu ça.
      Vous parlez aussi d'instruction, donc c'est de l'assembleur. Ce n'est plus de l'ASCII, mais de l'opcode, non ?
      Regrouper les mêmes valeurs en une seule, si arrayList ne contient qu'une valeur et que c'est 127, alors ...
      Qu'est-ce que vous avez déjà fait ? Ce sera plus simple pour aider.

              byte value = 127;
              ArrayList<Byte> test = new ArrayList();
              test.add(value);
              test.add(value);
              test.add(value);
              test.add(value);
              
              // Verifier de ne pas avoir de tableau qu'avec des 127.
              Set set = new HashSet() ;
              set.addAll(test) ;
              test = new ArrayList(set) ;
              if (test.size() == 1)
                  if(test.get(0) == 127)
                      System.out.println("alors ....");

      (C'est un exemple, mais je ne vois pas son utilité).

      Bonne continuation.

      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2016 à 16:38:46

        Bonjour.

        Ce n'est pas très clair, notamment sur le type de ta List : est-ce bien ArrayList<Byte> ?

        boolean all127(List<Byte> list) {
            // tests
        }
        
        
        if (all127(list)) {
            // instructions
        }
        • Partager sur Facebook
        • Partager sur Twitter
        Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
          27 novembre 2016 à 17:09:09

          Tout d'abord merci pour vos réponse.

          J'explique un peu plus mon cas.
          Je dois crée ( c'est un TP en cours ) un programme qui crypte en MD5 un mot de passe. Aucun problème pour cette partie.

          Ensuite je dois cracker ce mot de passe par brut force.

          Donc je crée une :

          ArrayList<Byte> tableauByte = new ArrayList<Byte>();
          • J'y ajoute un premier élément égale a 32, qui correspond a l'espace dans le code ASCII.
          • Je convertis cet élément en String ( j'ai quelques difficulité ici également...)
          • Je le crypte en MD5 et je le compare au hash du mot de passe crypte. si ils ont le même hash alors j'ai trouvé le mdp, sinon j'incrémente mon élément de mon arrayList et je recommence.
          • Si mon élément arrive a 126 ( et pas 127 écris dans le premier post désolé ) qui correspont a ~ (le dernier caractère possible dans la table ASCII) alors j'ajoute un nouvel élément dans mon ArrayList et je recommence toutes les possibilités possible avec les 2 éléments.

          Et ainsi de suite jusqu'a ce que je tombe sur la bonne combinaison qui correspond au mot de passe.

          Voila, j'espère que vous comprenez mieux mon problème.

          -
          Edité par Morin21 27 novembre 2016 à 17:16:38

          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2016 à 18:08:35

            Bonjour.

            On ne dit pas crypter mais chiffrer.
            MD5 n'est pas du chiffrement mais du hachage.

            En gros tu veux itérer sur des nombres de 32 à 126 de ce style :

            • [32]
            • [33]
            • ...
            • [126]
            • [32, 32]
            • [33, 32]
            • ...
            • [126, 32]
            • [32, 33]
            • [33, 33]
            • [34, 33]
            • ...

            La problématique est exactement la même que l'incrémentation d'un nombre, où tu stockes la liste des chiffres de 0 à 9 : tu incrémentes la 1ère valeur, et lorsqu'elle est à 9 alors tu réinitialises à 0 puis incrémentes la valeur d'à côté en appliquant la même règle : on se retrouve dans du récursif.

            • Partager sur Facebook
            • Partager sur Twitter
            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
              27 novembre 2016 à 21:12:41

              Désolé pour l'abus de langage, je ne ferais plus l'erreur !

              C'est presque sa. Ce que j'aimerais c'est :

              • [32]
              • [33]
              • ...
              • [126]
              • [32,32]
              • [32,33]
              • ...
              • [32,126]
              • [33,32]
              • ...
              • [33,126]
              • ainsi de suite

              Mais du coup je sais pas comment faire... j'ai beau chercher je n'y arrive pas..
              Et mes recherches google ne m'aide pas beaucoup plus...

              -
              Edité par Morin21 27 novembre 2016 à 21:44:02

              • Partager sur Facebook
              • Partager sur Twitter
                27 novembre 2016 à 22:13:11

                Morin21 a écrit:

                C'est presque sa. Ce que j'aimerais c'est :

                • [32]
                • [33]
                • ...
                • [126]
                • [32,32]
                • [32,33]
                • ...
                • [32,126]
                • [33,32]
                • ...
                • [33,126]
                • ainsi de suite

                Ah ok, ouè c'est quasiment pareil, au sens de parcours près.

                Morin21 a écrit:

                Mais du coup je sais pas comment faire... j'ai beau chercher je n'y arrive pas..

                Et mes recherches google ne m'aide pas beaucoup plus...

                Là c'est du pure algorithmique : il faut trouver la règle (je l'ai cité au dessus, mais il y a des variantes dé-récursifiées), le dérouler sur papier, puis l'implémenter proprement en Java.

                • Partager sur Facebook
                • Partager sur Twitter
                Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                  28 novembre 2016 à 9:22:01

                  C'est justement la le problème.
                  Pour la récursivité je dois mettre ma boucle qui met permet de renvoyer toutes les possibilités.
                  Mais si ma fonction me renvoie mon résultat après la fonction recommence, et donc toutes les possibilités aussi.
                  J'avoue etre un peu perdu ...

                  Edit : code retiré.

                  -
                  Edité par Morin21 30 novembre 2016 à 16:35:22

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 novembre 2016 à 21:56:05

                    Petit up.
                    Personne pour m'aider, SVP ???
                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 novembre 2016 à 13:03:38

                      Bonjour,

                      Personne ne va aider, désolé.

                      Hacher un texte par soit même, c'est un cours pour apprendre le hachage.

                      Dés-hacher un texte conçu avec MD5, revient à faire du piratage de code, c'est Interdit.

                      Aucun professionnel en informatique ou professeur, vous demanderez de dés-hacher du MD5.

                      Si quelqu'un veut aider, il prendra ces responsabilités, mais je n'irais pas plus loin avec ce sujet, désolé et bonne chance.

                      PS : Qui nous dit que vous n'allez pas l'utiliser pour pirater les mots de passe sur le net ou autre.

                      Bonne continuation.

                      -
                      Edité par pctronique 30 novembre 2016 à 13:19:59

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 novembre 2016 à 16:34:51

                        Bonjour,

                        Je comprend bien ce que vous voulez dire et c'est bien pour cette raison que je n'ai pas demander la totalité ni même comment faire.
                        A la base j'ai demander comment je peux faire :

                        - Une fonction qui test toutes les possibilités possibles et qui ne s'arrête jamais.
                        [0]
                        [1]
                        ...
                        [z]
                        [0 0]
                        [0 1]
                        ...
                        [0 z]
                        [1 0]
                        [1 1]

                        Ainsi de suite, rien d'illégale la dedans.
                        J'édite mon post précédent pour enlever mon code.

                        Merci quand même, bonne continuation.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          30 novembre 2016 à 17:30:59

                          <troll>

                          ceux qui utilisent encore du md5 n'ont qu'à se mettre à jour. C'est tellement faible comme protection qu'il existe beaucoup de programme pour le craquer (voir google) alors j'suis pas certain qu'un type de plus change grand chose....surtout si c'est pour de la formation (et en plus si c'est pour faire du brut force)

                          <troll>

                          Je veux bien t'aider moi,j'ai déjà fait ce genre de truc, go MP si t'as encore des problèmes

                          • Partager sur Facebook
                          • Partager sur Twitter
                            30 novembre 2016 à 17:51:38

                             Ça tient en quelques lignes :

                            class Counter {
                                private List<Integer> value = new ArrayList<>(asList(0));
                            
                                public void increment() {
                                    increment(0);
                                }
                            
                                /** Recursif */
                                private void increment(int index) {
                                    if (value.get(index) == 9) { // nouvelle décimale
                                        value.set(index, 0); // après "9" ça passe à "10"
                                        value.add(0);
                                        increment(index + 1); // on incrémente le chiffre d'à côté
                                    } else
                                        value.set(index, value.get(index) + 1);
                                }
                            
                                public List<Integer> getValue() {
                                    return value;
                                }
                            }

                            à la POO près, permettant d'avoir une utilisation simple :

                            Counter counter = new Counter();
                            for (int i = 0; i < 99; i++) {
                                System.out.println(counter.getValue());
                                counter.increment();
                            }

                            Je te laisse corriger le bug, et adapter à ta guise !

                            PS : le MD5 se craque en quelques secondes, via des sites sur internet.

                            -
                            Edité par Pinguet62 30 novembre 2016 à 17:52:20

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Angular 2 est l'avenir, jQuery c'est de la merde !!! - Java 8 c'est l'an 2016+ (programmez en 1 ligne)
                              30 novembre 2016 à 20:12:56

                              Je présente mes excuses (sincèrement). Après avoir discuté avec pinguet62, j'admet que j'étais un peu vite dans ma réponse.
                              De nos jours, tout le monde connaît et on entendu parlé de l'attaque par "force brut".
                              Le hachage par MD5 n’étend plus du tous utilisé, vu qu'on peu le décrypter vite fait sur le net.
                              Dés-hacher le MD5, n'est plus considérer comme du piratage, mais comme des cours pour apprendre les algos (de nos jours utiliser par les professeurs pour apprendre les algos). 
                              J'admets que c'est vrai et je suis d'accord. Donc je tiens sincèrement à présenter mes excuses.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 décembre 2016 à 18:42:57

                                Bonjour,

                                Un grand merci a vous tous pour votre aide, Pinguet62 en particulier !

                                Je passe le sujet en résolu.

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Condition avec les éléments d'une ArrayList

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown