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 :

DCPCrypt / GnuPg avec Delphi 7


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Par défaut DCPCrypt / GnuPg avec Delphi 7
    Bonjour,

    Actuellement, je cherche la meilleure solution pour encrypter/décrypter des fichiers depuis une application Delphi7.
    Sachant que j'ai une contrainte : je dois pouvoir décrypter un fichier qui a été encrypté via GnuPG.

    Du coup je partais sur l'utilisation de GnuPg dans mon code Delphi 7 via le lancement de la commande gpg dans un CreateProcess.

    Par contre, je me demandais si à votre connaissance il n'existerait pas un wrapper Delphi pour GnuPG.
    J'ai également vu qu'il existe DCPCrypt une librairie Delphi qui gère différents types de cryptages. A votre avis, est-il possible via DCPCrypt de décrypter un fichier qui a été encrypté via GnuPG sachant que c'est algorithme par défaut de GnuPG qui est utilisé (à savoir AES-128).

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 124
    Par défaut
    AES-128 est un basique de chez basique, certains diraient même qu'il est obsolète

    Pas besoin de DCPCrypt (DCPrijndael.pas), pour un AES 128, les api Windows le font , c'est défini dans JwaWinCrypt, un code plus récent mais aussi plus éloigné de D7 : TSLTAES128ECB et TSLTAES128CBC , je vois du RawByteString dans mon code, en D7, un simple string passera.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 405
    Par défaut
    Citation Envoyé par aharel Voir le message
    J'ai également vu qu'il existe DCPCrypt une librairie Delphi qui gère différents types de cryptages. A votre avis, est-il possible via DCPCrypt de décrypter un fichier qui a été encrypté via GnuPG sachant que c'est algorithme par défaut de GnuPG qui est utilisé (à savoir AES-128).
    Quand tu veux décrypter avec "DCPCrypt version X" un fichier crypté au préalable avec "DCPCrypt version Y", tu n'y arrives pas toujours alors utiliser DCPCrypt pour décrypter un fichier issu d'un outils tiers, tu peux tout simplement oublier l'idée!

    Ce n'est pas parce qu'une librairie annonce crypter en AES-128 qu'elle le fait de la même manière qu'une autre...

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 124
    Par défaut
    Citation Envoyé par Anselme45 Voir le message
    Ce n'est pas parce qu'une librairie annonce crypter en AES-128 qu'elle le fait de la même manière qu'une autre...
    C'est donc un bug car l'AES-128 est normé, il existe plusieurs méthodes appliquées sur algorithme Rijndael qu'il ne faut pas mélanger évidemment.

    Pour WinCrypt CryptEncrypt, je confirme qu'il fonctionne avec un AES embarqué dans un micro-contrôleur 16Bits, j'avais fait un programme de test pour une collègue qui devait le coder en C pour dialoguer avec un automate embarqué dans tiers, donc il fallait que cela soit compatible.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 2 405
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    C'est donc un bug car l'AES-128 est normé, il existe plusieurs méthodes appliquées sur algorithme Rijndael qu'il ne faut pas mélanger évidemment.
    La norme, c'est une chose... Cela ne veut malheureusement pas dire que tous ceux qui disent suivre la norme le font réellement...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Par défaut
    OK, j'ai vu vos réponses.
    L'idée serait donc de coder directement en Delphi 7 l'encryptage de fichier avec l'algorithme AES-128.
    Par contre j'ai regardé les liens que vous avez mis et en toute honnêteté, je n'ai pas tout compris.

    J'ai récupéré une unit Delphi XE qui semble faire l'affaire (en pièce jointe), mais ca ne compile pas en Delphi 7 notamment à cause du type TBytes.
    Savez-vous comment faire pour adapter ce code afin qu'il fonctionne avec Delphi7?

    Merci
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    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 : 14 124
    Par défaut
    N'avez pas remarqué que votre fichier, c'est aussi les API Windows WinCrypt CryptEncrypt ?
    C'est comme dans l'exemple que j'ai fourni plus haut où je vous ai indiqué de remplacer RawByteString par string
    D'où l'importance de comprendre ce que vous récupérer ailleurs et ce que l'on vous propose.

    Et TBytes c'est juste un array of Byte
    L'autre problème sera la version de Indy
    TEncoding qu'il faudra retirer ... je dirais un PByte ou PChar en D7 sera suffisant
    On note que l'auteur a eu du mal avec la longueur du Buffer en trichant avec un bourrage avec des espaces, ça déjà, c'est suspect, il a eu la flemme de gérer la boucle du CBC en estimant un excédent sur algo plutot adapté à un ECB, c'est pour l'excédent du Final block et implicitement, il suppose que 8 espaces feront 16 Bytes, cet astuce en D7 ne fonctionnera pas, il faudra ajouter +16 (128Bits) en plus pour le buffer de sortie.

    Enfin pour l'AES, le hashage de la clé en SHA 256, ça c'est une particularité pas forcément cohérente avec votre besoin.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 22h56
  2. [Choix] Quel SGBD avec delphi et kylix
    Par djmcg dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 16/01/2003, 13h24
  3. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 20h03
  4. Réponses: 5
    Dernier message: 08/07/2002, 17h22
  5. Réponses: 2
    Dernier message: 21/03/2002, 00h01

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