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 :

Décrypter une chaine cryptée


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut Décrypter une chaine cryptée
    Bonjour

    Pour faire communiquer une application delphi avec une application PHP, j'aimerai que les échanges soient cryptés.

    J'ai trouvé un bout de code pour crypter coté PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    	function strtohex($x) 
    	{
    		$s='';
    		foreach(str_split($x) as $c) $s.=sprintf("%02X",ord($c));
    		return($s);
    	} 
     
    	$rkey = 'simple24characterkey1234';
    	$riv = 'simple16byteiv12';
    	$data = 'jan@laposte.net';
    	$data = mcrypt_cbc(MCRYPT_RIJNDAEL_128,$rkey,$data,MCRYPT_ENCRYPT,$riv);
    	echo strtohex($data);
    ?>

    Coté delphi j'ai trouvé sur le net comment crypter en passant par la librairie OpenstrsecII :

    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
    const
      KeySize = 32; // 256 bits
      BlockSize = 16; // 128 bits
    var
      lKey: AnsiString;
      lC: TCipher;
      lS: AnsiString;
      cle: AnsiString;
    begin
      lKey := 'simple24characterkey1234';
      lS := 'jan@laposte.net';
      lS := PadWithZeros(lS,BlockSize); // Pads a string with #0
      UniqueString(lS);
     
      lC := TRijndael_CBC.Create(Pointer(lKey)^,Length(lKey),0);
      try
        lC.IVector := 'simple16byteiv12';
        lC.Encrypt(Pointer(lS)^,Length(lS));
      finally
        lC.Free;
      end;
     
      ShowMessage(BinToHex(Pointer(lS)^,Length(lS)));
    Les 2 bouts de code PHP et Delphi génèrent la même chaine de caractère, ça fonctionne pour crypter.

    Par contre comment décrypter coté Delphi? J'ai pas trouvé d'exemple sur le net pour la fonction Decrypt, j'ai bien essayé de faire quelque chose mais ça me retourne ceci :
    96A785A8F6F17252430436EF44B84729887CB52F7F0DE3A63CFB03821E6FD3AF
    Rien à voir avec l'adresse email de départ...

    Une idée de comment faire?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 513
    Par défaut
    Bonjour,

    c'est un sujet déjà traité sur le forum (avec d'autres méthodes, mais qui fonctionnent bien) - regarde ici

    Crypter- Décripter

    j'ai personnellement testé la méthode du Dr Who qui fonctionne très bien

    A+

    Charly

  3. #3
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    De qu'elle méthodes tu parle charly ? je m'en souviens plus


    Sinon, grand sujet qu'est la protection des données transmises en URL à une api PHP.

    encoder en hexa n'est pas une bonne idée, ça double voir triple la taille des données.

    idéalement, tu encode en base64 (j'ai les codes pour Delphi si tu veux) en modifiant la table d'encodage.
    ça reste rapide et condensé surtout.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 513
    Par défaut
    Bonjour

    @Dr Who : Oh, désolé, je rends à César ce qui appartient à César ! il s'agissait de le méthode de Paul Toth que je cite dans mon post !

    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
    procedure Crypt(var Data; Size: Integer; Seed: Cardinal);
    var
      p : PByte;
      i : Integer;
    begin
      RandSeed := Seed; // initialiser le générateur de nombres aléatoires
      p := @Data;
      for i := 0 to Size - 1 do
      begin
        p^ := p^ xor Random(255);
        Inc(p);
      end;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s: string;
    begin
      s := 'Hello World';
      Crypt(s[1], Length(s) * SizeOf(Char), 456);
      ShowMessage(s);
      Crypt(s[1], Length(s) * SizeOf(Char), 456);
      ShowMessage(s);
    end;

    Voilà, c'est rétabli !

    A+

    Charly

Discussions similaires

  1. Décrypter en Java une chaine cryptée avec PHP
    Par identifiant_bidon dans le forum Général Java
    Réponses: 2
    Dernier message: 12/03/2011, 02h35
  2. Décrypter une chaine sans clé avec XOR
    Par mastraze dans le forum Sécurité
    Réponses: 1
    Dernier message: 28/06/2010, 08h49
  3. Réponses: 2
    Dernier message: 10/07/2002, 11h51
  4. [TP]lire une ligne de l'ecran et la stocker dans une chaine
    Par Bleuarff dans le forum Turbo Pascal
    Réponses: 26
    Dernier message: 02/07/2002, 10h08
  5. Réponses: 3
    Dernier message: 12/06/2002, 21h15

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