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

Algorithmes et structures de données Discussion :

Checksum : challenge


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut Checksum : challenge
    Bonjour,

    Dans beaucoup de challenge javascript on peut voir ce genre de script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var password = prompt("Enter password","");
    var sum = 1.0;
    for (i = 0; i<password.length; i++) {
      sum *= password.charCodeAt(i);
    }
    if (sum == 2476409006188517400) {Good}
    Comme vous l'aurez surement deviner le but de ce challenge est de trouver le mot de passe !

    Quel est la meilleur solution pour le résoudre ?
    - Faire un brute force ?
    - Esseyer de s'approcher assez près de la valeur 2476409006188517400 et ensuite esseyer quelques combinaisons pour esseyé d'arriver au bon chiffre ?
    - Autre solution....

    Merci d'avance...

  2. #2
    Membre averti Avatar de xxiemeciel
    Inscrit en
    Juin 2005
    Messages
    371
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 371
    Points : 352
    Points
    352
    Par défaut
    Salut,

    Deja je ne pense pas que la solution a ce probleme soit unique, il doit probablement y avoir plusieurs password dont la somme va correspondre au chiffre.

    deja le password peut etre ecrit dans n'importe quel ordre et ca va fonctionner pareil, a moins que charCodeAt(i) tienne compte de la position i.

    ensuite tu peux decomposer ton chiffre en facteurs premiers et tu trouveras une solution.

    XXiemeciel
    XXiemeciel

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Je n'y avait pas dutout pensé à décomposer se nombre en facteur premier: pas bête dutout

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 216
    Points : 74
    Points
    74
    Par défaut
    Je n'y ait pas pensé sur le coup mais la décomposition en facteur premier n'est pas si pratique que ça :
    - Je vais me retrouver avec des nombres du genre: 3,5,7,11,13 et re-traduire ces nombres en code ascii : c'est pas évident...

    Il faudrai que le password ne soit formé que de chiffres et de lettres (pour simplifier le problème ).

    Rappel du code ascii: 48-57 (0-9), 65-90 (A-Z), 97-122 (a-z)

    Donc il faudrait diviser le nombre 2476409006188517400 par les différents nombres cité ci-dessus mais à un certain moment de la division, je risque de ne plus savoir diviser mon nombre par un des nombres ci-dessus.
    Et donc il faudrait tout recommencer à diviser avec d'autres diviseurs !

    Comment résoudre ce problème ?

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    si 2476409006188517400 est donné alors
    2476409006188517400 =
    2^3 * 3^6 * 5^2 * 7 * 11^4 * 13 * 29 * 37 * 109^2

    par chance, le nombre de facteurs premiers distincts est limité ( 9 différents )

    Il suffit alors de decider arbitairement que certains alphanumériques correspondent à 2 ou 3 ou 5 ou... et de réaliser en consequence la multiplication en fonction des caracteres entrés.
    Attention ce chiffre necessite un codage entier 64 bits!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 141
    Points : 139
    Points
    139
    Par défaut
    ben je trouve que ça limite déjà pas mal:
    - il faut des entiers compris entre les char code "typiques"
    - ça donne une borne sur la longueur maxi et mini du password
    - il "reste" à trouver les combinaisons utilisant tous les nombres de la décomposition, avec une longueur bornée et un total connu

    => je tenterais pê une résolution de contrainte pour ça

    Formellement:
    - soit n la longueur du password avec b_inf <= n <= b_sup (les bornes sont faciles à trouver à partir de la décomposition)
    - Vj les valeurs de la décomposition en facteurs premiers en conservant les doublons
    - Xi les nombres cherchés (ou charactères) sont tels ques Xi >= 0 et Prod(Xi) = Total
    - Bij un indice boolean déterminant si la Valeur Vj est utilisée pour l'inconnue Xi
    - contrainte sur l'utilisation unique de chaque Vj : sum_i(Bij) = 1
    - et ne pas oublier: Xi = Bij * Vj (avec un léger abus de notation )
    - il faut aussi tenir compte du fait que tous les Xi ne doivent pas etre utilisé étant donné que b_inf <= i <=b_sup et donc rajouter des variables binaires similaires à Bij

    je pense que c'est tout pour la formalisation mais ça vaudrait le coup d'essayer non ? ou j'ai pê omis qqch dans la complexité ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/11/2005, 20h17
  2. Checksum trames GPS
    Par giloutho dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2005, 12h31
  3. Calcul de checksum ?
    Par elitost dans le forum Windows
    Réponses: 14
    Dernier message: 21/01/2005, 13h29
  4. [8.0.5-->9.2.0.5] Checksum sur des tables oracle
    Par bobunny dans le forum Oracle
    Réponses: 9
    Dernier message: 24/11/2004, 12h46
  5. CMOS checksum error
    Par Hakim dans le forum Ordinateurs
    Réponses: 3
    Dernier message: 28/10/2003, 09h33

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