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

Composants VCL Delphi Discussion :

cryptage compatible entre Delphi XE2 et PHP


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 410
    Points : 307
    Points
    307
    Par défaut cryptage compatible entre Delphi XE2 et PHP
    Bonjour,

    Je dois, par une appli Delphi XE2, envoyer des requètes et récupérer les resultats vers un serveur PHP.
    Les commandes sont cryptées et voici comment PHP les traite :
    <?php
    include ('configure.php');
    include_once ('general.php');

    $ky = 'lkirwf897+22#bb............................';
    $iv = '741952hheeyy66............................';

    if((isset($_REQUEST['cmd'])) && ($_REQUEST['cmd'] != '')){
    $cmd = $_REQUEST['cmd'];
    $Query = decryptRJ256($ky, $iv, $cmd);
    $Cmds = ExecuteQuery($Query);
    //$Cmds = ExecuteQuery(utf8_encode ($Query));
    $CmdTxt = '';
    J'ai demandé de l'aide à l'ami Google, j'ai trouvé plein de choses mais je suis un peu noyé et j'ai essayé un programme de test, mais visiblement le décodage n'est pas bon.

    Quelqu'un a-t-il déjà traité ce problème ?
    Faut-il des chaines en String ou en AnsiString ?......
    Merci d'avance cela me permettrait de ne pas perdre de temps sur cette partie, sachant que j'ai d'autres points à résoudre.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Rijndael 256 est-ce comme le AES 256 ?
    Ou existe-t-il une subtile différence ?

    Voir les API Windows : AES via CryptAPI
    au lieu de CALG_AES_128, tu passe en CALG_AES_256, il faudrait surement changer les taille de bloc

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Rijndael 256 est-ce comme le AES 256 ?
    Ou existe-t-il une subtile différence ?
    AES est un sous ensemble de Rijndael puisqu'il ne travaille qu'avec des blocs et des clés de 128 bits (Rijndael travaille avec des blocs et des clés compris entre 128 et 256 bits multiples de 32)

    J'ai l'impression que le code PHP utilise Rijndael en mode 256 bits donc cela ne va pas le faire pour le transformer en AES (ou alors utiliser une fonction PHP 128 bits).

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 410
    Points : 307
    Points
    307
    Par défaut
    Malheureusement, je n'ai pas le choix du code PHP d'interface !!

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 410
    Points : 307
    Points
    307
    Par défaut
    Voici les codes des fonctions de cryptage et décryptage :
    function decryptRJ256($key,$iv,$string_to_decrypt) {
    $string_to_decrypt = base64_decode (base64_decode($string_to_decrypt));
    //$string_to_decrypt = base64_decode($string_to_decrypt);
    $rtn = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv);
    $rtn = rtrim($rtn, "\0\4");
    return($rtn);
    }

    function encryptRJ256($key,$iv,$string_to_encrypt) {
    $rtn = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv);
    $rtn = base64_encode(base64_encode($rtn));
    return($rtn);
    }
    Si cela peut aider les spécialistes...

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 586
    Points : 25 262
    Points
    25 262
    Par défaut
    Etrange ce double base64_encode !
    En Delphi,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // OLD
    procedure EncodeStream(Input, Output: TStream);
    procedure DecodeStream(Input, Output: TStream);
    function  EncodeString(const Input: string): string;
    function  DecodeString(const Input: string): string;
     
    // XE2
    function  DecodeBase64(const Input: AnsiString): TBytes;
    function  EncodeBase64(const Input: Pointer; Size: Integer): AnsiString;

    Il y a une classe TDCP_rijndael de DCPcrypt hébergé ici par reisubar

    Citation Envoyé par ram-0000 Voir le message
    J'ai l'impression que le code PHP utilise Rijndael en mode 256 bits donc cela ne va pas le faire pour le transformer en AES (ou alors utiliser une fonction PHP 128 bits).
    C'est la fameuse subtilité que je redoutais suite à la lecture de wikipedia !


    Présentation de la librairie Mcrypt pour chiffrer/déchiffrer ses données en PHP énumére que du RIJNDAEL 128, 192 et 256

    CryptAPI de Microsoft propose du AES 128, 192 et 256

    C'est pas pratique si l'un et l'autre ne sont pas compatible !

    J'espère que TDCP_rijndael sera une solution !

    Ou encore TLbRijndael de Turbo Power LockBox

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 410
    Points : 307
    Points
    307
    Par défaut
    Merci à tous pour ces infos, mais ce n'est pas gagné !
    J'avais déjà chargé les différentes bibliothèques que ShaiLeTroll à eu la gentillesse de m'indiquer, mais une première approche m'a montré la complexité de la chose rien qu'au niveau du vocabulaire employé ! C'est pour cela que j'ai demandé de l'aide.

    Bon, je mets le scaphandre et je plonge !

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. [Couleur] Différence entre Delphi, Php/Html
    Par Rayek dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 13h06
  3. probleme de connexion entre delphi 7 et une BD access
    Par bob.marley dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/04/2004, 11h17
  4. Pb entre DELPHI et ACCESS
    Par sufteam dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2004, 17h48
  5. Réponses: 2
    Dernier message: 11/07/2003, 18h24

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