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 SQL Discussion :

Inversion de calcul (pour les matheux)


Sujet :

Langage SQL

Vue hybride

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

    Informations forums :
    Inscription : Avril 2003
    Messages : 12
    Par défaut Inversion de calcul (pour les matheux)
    Salut à tous,

    J'ai un calcul qui permet d'encrypter un mot de passe, et j'aurais besoin de faire le calcul inverse afin de retrouver le mot de passe en clair à partir de celui encrypté.
    Un bon matheux pourrait il m'aiguiller ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resultat = (n + 97 + TRUNC(n / 97)) * 100 + MOD(n,97)
    Je connais donc le resultat et voudrais obtenir la valeur de n.

    Merci

  2. #2
    Membre chevronné Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Par défaut
    Salut,

    pour les calculs, j'ai remplacé resultat par r.

    r = (n + 97 + TRUNC(n / 97)) * 100 + MOD(n,97)


    on a mod (r,100) = mod (n,97) (1)
    et n = 97*trunc (n/97) + mod(n,97) (2)
    et trunc (r/100) = n+97+trunc(n/97) (3)

    de (2) on tire trunc(n/97) = (n - mod(n,97)) / 97
    d'ou en injectant dans (3) trunc (r/100) = n +97 + (n - mod(n,97)) / 97
    puis on remplace mod(n,97) de (1) et on a trunc (r/100) = n +97 + (n - mod (r,100)) / 97

    un petit développement trunc (r/100) -97 = n +n/97 -r/97 + mod(r,100)/97
    on multiplie par 97 on a : 97 trunc(r/100) - 97² - mod (r/100) = 98 n

    Et donc n = (97*trunc(r/100) - 97*97 - mod (r/100))/98

    Etant donné que je suis pas forcement le meilleur en math, pouvez vous tester sur des exemples (n'ayant pas la possibilité de le faire de mon poste) et me dire si j'ai trouvé la solution ou si je suis dans les choux.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 455
    Par défaut
    Si je ne m'abuse, on ne peut pas faire le calcul inverse de Trunc, ni de Modulo (il y a un therme mathématique pour ça, mais je ne m'en souviens plus ).

    En effet, 194 modulo 97 = 0, 97 modulo 97 = 0, 241 modulo 97 = 0... Bref résoudre x modulo 97 = 0 te renvoie une infinité de valeur.
    Donc plusieurs mots de passes possèdent la même valeur de cryptage, ce qui me fait penser que ton cryptage n'est pas réversible.

    Tatayo.

  4. #4
    Membre chevronné Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Par défaut
    La fonction mod ou 'partie entière' a elle seule n'est pas inversible (me rappelle plus du nom non plus), vu qu'il n'y a pas de bijection entre l'espace de départ et celui d'arrivé. Par contre, quand on a un mixte de tout à ta de trucs (comme ici), il y a des chances que ce soit inversible.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    gglefoncede, ça ressemble pas vraiment à une question SQL ça, la réponse de icsor est peut-être juste, mais ton sujet aurait été plus à sa place sur un forum de maths

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 12
    Par défaut
    Merci icsor et les autres,

    J'ai traduit ton mod(r/100) en mod(r,100) c'est ça ?

    Bon j'avais oublié de préciser que resultat et n sont des entiers positifs.
    J'ai un jeu de test : resultat = 51916661 et n=513773

    Ta formule me raméne 513771,755102041 c'est pas loin ;-)

  7. #7
    Membre chevronné Avatar de icsor
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2008
    Messages : 258
    Par défaut
    Effectivement, c'est pas loin, sauf que j'ai fait une erreur de signe

    La bonne formule (avec une syntaxe correcte pour le mod) donne :

    n = (97*trunc(r/100) - 9409 + mod (r,100))/98

    Pourquoi j'avais mis un moins devant le mod(r,100) reste un mystère.

    Mais je pense que la remarque de Snipah est pertinante, la prochaine fois, va poster dans algorithme.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bibliothèques de routines de calculs pour les nombres entiers géants
    Par Rekin85 dans le forum Codes sources à télécharger
    Réponses: 10
    Dernier message: 30/01/2015, 16h01
  2. [GD] Pour les matheux : centrer un texte dans une diagonale
    Par renaud26 dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 21/03/2012, 20h47
  3. Réponses: 10
    Dernier message: 12/04/2010, 19h19
  4. [XAML] Calcul pour les valeurs de variable
    Par MrDuChnok dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 05/05/2008, 20h59
  5. C++ pour les Matheux
    Par Nikopol dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 03/02/2006, 14h15

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