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

Delphi Discussion :

Opération inverse d'une fonction


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Opération inverse d'une fonction
    Salut à tous,

    je voudrais réaliser l'opération inverse de celle décrite ici (décryptage Base24):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //PID est une Array[0..14] of byte à décoder
    //Des est une Array[0..24] of byte résultat du décodage
    //HN, Value: CARDINAL;
     
      for I := 24 downto 0 do begin
          HN := 0;
          for N := 14 downto 0 do begin
            Value := (HN shl 8) or PID[N];
            PID[N] := Value div 24;
            HN    := Value mod 24;
          end;
          Des[I] := HN;
        end;
    c'est à dire partir de l'array Des pour obtenir l'array PID...
    J'ai cherché mais je n'ai trouvé qu'un bon mal de tête...

    Si quelqu'un a un cerveau meilleur que le mien, merci d'avance à lui.

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut


    bon j'ai pas la reponse mais peut etre quelque voix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for I := 24 downto 0 do begin
          HN := 0;
          for N := 14 downto 0 do begin
            Value := (HN shl 8) or PID[N];
            PID[N] := Value div 24; //=>  PID[N]  := (Value) DIV 24
            HN    := Value mod 24; //=> HN = (Value) - PID[N]
            //=> HN = Value - (Value DIV 24) => 24 *HN = 24*Value - Value
            // => 24 HN = 23 Value => 24/23 HN = Value   
          end;
          Des[i] := HN;
        end;
    en sachant que le SHL est une decalage de bit a gauche ce qui revient a
    2 ^8 = 256

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bnjour,

    En modifiant un peu le code pour stocker les valeurs intermédiaires, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //PID est une Array[0..14] of byte à décoder
    //Des est une Array[0..24] of byte résultat du décodage
    //HN, Value: CARDINAL;
     
      for N := 14 downto 0 do TPID[25,N]:=PID[N]
      for I := 24 downto 0 do begin
      THN[i,15] := 0;
          for N := 14 downto 0 do begin
            TValue[i,N] := THN[i,N+1]*256 + TPID[i+1,N];
            THN[i,N]  := TValue[i,N] mod 24;
            TPID[i,N] := (TValue[i,N] - THN[i,N])/24 ;
          end;
          Des[I] := THN[i,0];
        end;
    A partir des Des[i], on obtient évidemment THN[i,0] et ensuite ...je coince aussi

    Dans quel cadre est demandé ce décryptage ?
    Est-on sur qu'il y a réellement une solution ?

    il faudrait-il peut-être demander aux modérateurs le transfert du post sur le forum algorithme.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Petit rectificatif sur la définition de PID :
    Citation Envoyé par fadiese_1
    Salut à tous,

    je voudrais réaliser l'opération inverse de celle décrite ici (décryptage Base24):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //PID est une Array[0..14] of CARDINAL à décoder
    //Des est une Array[0..24] of byte résultat du décodage
    //HN, Value: CARDINAL;
    
      for I := 24 downto 0 do begin
          HN := 0;
          for N := 14 downto 0 do begin
            Value := (HN shl 8) or PID[N];
            PID[N] := Value div 24;
            HN    := Value mod 24;
          end;
          Des[I] := HN;
        end;
    c'est à dire partir de l'array Des pour obtenir l'array PID...
    J'ai cherché mais je n'ai trouvé qu'un bon mal de tête...

    Si quelqu'un a un cerveau meilleur que le mien, merci d'avance à lui.
    Le but de cet algo est d'inscrire dans le registre la clé de Windows XP lors d'une installation en Unattended. L'intêret, c'est que toutes les maj sont intégrées dans le CD ainsi que IE7 et WMP11 car ceux-ci demandent qu'une clé valide soit présente lors de leur installation . Du coup, plus d'attente.

    Tout ceci est parfaitement légal et régulier, bien sur.

    L'algo fourni ici sert à trouver la clé d'origine depuis celle cryptée en base24 dans le registre.

  5. #5
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 857
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 857
    Points : 11 291
    Points
    11 291
    Billets dans le blog
    6
    Par défaut
    SGDG :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i:=0 to 24 do begin
      HN:=Des[i];
      for n:=0 to 14 do begin
        value:=24*PID[n]+HN;
        HN:=value div 256;
        PID[n]:=value mod 256;
      end;
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    ON A TROUVE LE CERVEAU !!!

    Citation Envoyé par tourlourou
    SGDG :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for i:=0 to 24 do begin
      HN:=Des[i];
      for n:=0 to 14 do begin
        value:=24*PID[n]+HN;
        HN:=value div 256;
        PID[n]:=value mod 256;
      end;
    end;

  7. #7
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    N'ayant pas bien compris le sujet, j'ai observé à distance.

    Chapeau les gars.

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

Discussions similaires

  1. graphe d'une fonction inverse avec gnuplot/tikz latex
    Par Nono Sto dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 10
    Dernier message: 06/11/2009, 21h27
  2. Réponses: 4
    Dernier message: 04/12/2008, 12h21
  3. Calcul d'une fonction inverse
    Par devlop_RO dans le forum Mathématiques
    Réponses: 4
    Dernier message: 22/09/2008, 16h08
  4. Calcul d'une fonction analytique inverse
    Par matxl dans le forum Mathématiques
    Réponses: 3
    Dernier message: 31/05/2008, 14h15
  5. Difficulté à "inverser" une fonction
    Par gorgonite dans le forum Prolog
    Réponses: 13
    Dernier message: 05/10/2006, 10h13

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