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 :

que pensez-vous de ce (encrypt / decrypt passwords)


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Par défaut que pensez-vous de ce (encrypt / decrypt passwords)
    âpres de grosse recherches sur le net je suis tombé sur se morceau de code
    pour coder des password. je voudrais savoir se que vous en pensez pour
    l'utilisation de mon soft.
    savez vous comment l'utiliser ?

    merci d'avance pour vos remarque


    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    // This example shows how you can encrypt strings
    // using special security string.
    // You can decode data only if you know security string.
    // I suppose, there is no chance to hack security string, using any analyse algorythms.
    // Every time you call this function, you will
    // have a new result even if all params are constant
    // NOTE: Don`t forget to call "Randomize" proc before using this functions.
     
    const 
      Codes64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';
     
      // you must use this function to generate special
      // security string, which is used in main encode/decode routines.
      // NOTE: you must generate the security string only once and then use it in encode/decode functions.
     
    function GeneratePWDSecutityString: string;
    var 
      i, x: integer;
      s1, s2: string;
    begin
      s1 := Codes64;
      s2 := '';
      for i := 0 to 15 do
      begin
        x  := Random(Length(s1));
        x  := Length(s1) - x;
        s2 := s2 + s1[x];
        s1 := Copy(s1, 1,x - 1) + Copy(s1, x + 1,Length(s1));
      end;
      Result := s2;
    end;
     
    // this function generate random string using
    // any characters from "CHARS" string and length
    // of "COUNT" - it will be used in encode routine
    // to add "noise" into your encoded data.
     
    function MakeRNDString(Chars: string; Count: Integer): string;
    var 
      i, x: integer;
    begin
      Result := '';
      for i := 0 to Count - 1 do
      begin
        x := Length(chars) - Random(Length(chars));
        Result := Result + chars[x];
        chars := Copy(chars, 1,x - 1) + Copy(chars, x + 1,Length(chars));
      end;
    end;
     
     
    // This will encode your data.
    // "SecurityString" must be generated using method
    // described above, and then stored anywhere to
    // use it in Decode function.
    // "Data" is your string (you can use any characters here)
    // "MinV" - minimum quantity of "noise" chars before each encoded data char.
    // "MaxV" - maximum quantity of "noise" chars before each encoded data char.
     
    function EncodePWDEx(Data, SecurityString: string; MinV: Integer = 0;
      MaxV: Integer = 5): string;
    var 
      i, x: integer;
      s1, s2, ss: string;
    begin
      if minV > MaxV then 
      begin 
        i := minv;
        minv := maxv; 
        maxv := i; 
      end;
      if MinV < 0 then MinV := 0;
      if MaxV > 100 then MaxV := 100;
      Result := '';
      if Length(SecurityString) < 16 then Exit;
      for i := 1 to Length(SecurityString) do
      begin
        s1 := Copy(SecurityString, i + 1,Length(securitystring));
        if Pos(SecurityString[i], s1) > 0 then Exit;
        if Pos(SecurityString[i], Codes64) <= 0 then Exit;
      end;
      s1 := Codes64;
      s2 := '';
      for i := 1 to Length(SecurityString) do
      begin
        x := Pos(SecurityString[i], s1);
        if x > 0 then s1 := Copy(s1, 1,x - 1) + Copy(s1, x + 1,Length(s1));
      end;
      ss := securitystring;
      for i := 1 to Length(Data) do
      begin
        s2 := s2 + ss[Ord(Data[i]) mod 16 + 1];
        ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
        s2 := s2 + ss[Ord(Data[i]) div 16 + 1];
        ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
      end;
      Result := MakeRNDString(s1, Random(MaxV - MinV) + minV + 1);
      for i := 1 to Length(s2) do Result := Result + s2[i] + MakeRNDString(s1,
          Random(MaxV - MinV) + minV);
    end;
     
    // This will decode your data, encoded with the function above, using specified "SecurityString".
     
    function DecodePWDEx(Data, SecurityString: string): string;
    var 
      i, x, x2: integer;
      s1, s2, ss: string;
    begin
      Result := #1;
      if Length(SecurityString) < 16 then Exit;
      for i := 1 to Length(SecurityString) do
      begin
        s1 := Copy(SecurityString, i + 1,Length(securitystring));
        if Pos(SecurityString[i], s1) > 0 then Exit;
        if Pos(SecurityString[i], Codes64) <= 0 then Exit;
      end;
      s1 := Codes64;
      s2 := '';
      ss := securitystring;
      for i := 1 to Length(Data) do if Pos(Data[i], ss) > 0 then s2 := s2 + Data[i];
      Data := s2;
      s2   := '';
      if Length(Data) mod 2 <> 0 then Exit;
      for i := 0 to Length(Data) div 2 - 1 do
      begin
        x := Pos(Data[i * 2 + 1], ss) - 1;
        if x < 0 then Exit;
        ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
        x2 := Pos(Data[i * 2 + 2], ss) - 1;
        if x2 < 0 then Exit;
        x  := x + x2 * 16;
        s2 := s2 + chr(x);
        ss := Copy(ss, Length(ss), 1) + Copy(ss, 1,Length(ss) - 1);
      end;
      Result := s2;
    end;

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    tu as également de de bons composants de cryptage décryptage
    dans la JVCL

    plus je fouille dedans plus je l'utilise j'en deviens accroc

  3. #3
    Membre chevronné

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Par défaut
    Le cryptage étant assez difficile à maitriser (càd avec un algo fiable), je te conseille plutôt de te diriger vers les composants JVCL ou DCPCrypt (beaucoup plus complet) qui offrent des méthodes reconnues (MD5, SSH, etc...)

  4. #4
    Membre confirmé Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Par défaut ...
    j'ai vue le code sur :
    http://www.swissdelphicenter.ch/torr...de.php?id=1559

    c'est quand même un site très bien.

    merci pour les infos je veux voir aussi dans cette voix.


    mais sinon es qu'une personne c'est comment il marche ?
    car pour le moment je suis pas arriver a le faire marcher.
    il faut juste la partie bouton pour actionner :-(

  5. #5
    Membre chevronné

    Homme Profil pro
    Chef de Projet ATIC
    Inscrit en
    Novembre 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de Projet ATIC
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 274
    Par défaut
    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
    // Clef de sécurité
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Randomize;
      Edit3.Text := GeneratePWDSecutityString;
    end;
     
    // Encodage
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Edit2.Text := EncodePWDEx(Edit1.Text, Edit3.Text, 2,6);
    end;
     
    // Décodage
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      Edit4.Text := DecodePWDEx(Edit2.Text, Edit3.Text);
    end;
    Ceci-dit, je te déconseille cette méthode pour stocker des mots de passe, car il faut dans ce cas que tu enregistres quelque part la clef de sécurité et cela peut donc facilement se retrouver.

    Je te conseille plutôt une méthode de 'hash' (MD5 par exemple) qui par rapport à une chaine va en faire un code unique. Tu stockes ce code dans ta base et lorsque l'utilisateur entre un mot de passe, tu le 'hash' à nouveau et compare le résultat avec ce que tu as dans ta base.

  6. #6
    Membre confirmé Avatar de pierre987321
    Inscrit en
    Août 2005
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 139
    Par défaut ...
    En faite pour mon soft c'est un email qui doit être crypté en pass
    pour être distribuer.

    Les personnes doivent présenter le pass qui correspond a l'email
    pour valider le soft.

    Le problème est de bien protéger le systeme de cryptage
    et d'éviter les saut :-(

    tu le vois comment mon smilblique ?


    ps:merci pour l'exemple de code ci-dessus

Discussions similaires

  1. Que pensez-vous des générateurs de doc PHP ?
    Par Nonothehobbit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 64
    Dernier message: 10/07/2007, 10h17
  2. Que pensez vous de filemaker
    Par thpopeye dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 14/06/2007, 15h20
  3. Que pensez vous du nouveau kernel 2.6 ?
    Par GLDavid dans le forum Administration système
    Réponses: 58
    Dernier message: 02/08/2004, 15h45
  4. [Débat] Que pensez-vous des langages à typage dynamique?
    Par Eusebius dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 16/06/2004, 12h12
  5. Que pensez vous du mariage ASP Flash?
    Par tyma dans le forum Flash
    Réponses: 4
    Dernier message: 09/07/2003, 15h00

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