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 :

Crypter / Décrypter du texte


Sujet :

Delphi

  1. #21
    Débutant
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 886
    Points : 330
    Points
    330
    Par défaut
    que de réponses ... je vous en remercie

    je met le topic en "résolu" et je ferai le tri des idées et des exemples fournit

  2. #22
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    A Paul Toth :
    procedure Crypt(var Data; Size: Integer; Seed: Cardinal);
    ... Juste une petite question : Comme la procédure Cypt utilise Random, est-ce que avec Random on ne risque pas de se retrouver avec un texte crytpté dont un caractère situé quelque part entre le début et la fin a été remplacé par le caractère réservé pour le marquage de la fin de fichier, car dans ce cas si on sauve le texte crypté sur le disque, lors de sa relecture on ne récupérerait que le début du texte crypté et fin serait perdue. ???

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #23
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    A Coussati : Autre idée de cryptage :

    Supposons que tu crées un dictionnaire dans lequel tu collectionnes les mots du vocabulaire utilisé dans tes textes ou un dictionnaire qui les contient avec d'autres mais qui soit non trié donc dans un ordre quelconque.
    Supposons que tu veuilles crypter le texte "Bonne année et meilleurs voeux" avec :
    - "Bonne" placé à l'indice 478 de ton dico,
    - "année" placé à l'indice 1123 de ton dico,
    - "et" placé à l'indice 9532 de ton dico,
    - "meilleurs" placé à l'indice 147 de ton dico,
    - "voeux" placé à l'indice 3257 de ton dico.
    Un simple cryptage par substitution de l'indice (formatté avec des zéros à gauche) remplaçant chaque mot du texte donnerait dans ce cas le texte crypté suivant :

    000478001123009532000147003257
    Impossible, d'après moi, à décrypter si toi seul as accès au dico et même par quelqu'un qui connaîtrait le principe du cryptage.

    A noter en plus que le formatage des indices avec un nombre excessif de zéros à gauche permet d'enrichir le dictionnaire au fur et à mesure des besoins.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  4. #24
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,

    A Paul Toth :
    ... Juste une petite question : Comme la procédure Cypt utilise Random, est-ce que avec Random on ne risque pas de se retrouver avec un texte crytpté dont un caractère situé quelque part entre le début et la fin a été remplacé par le caractère réservé pour le marquage de la fin de fichier, car dans ce cas si on sauve le texte crypté sur le disque, lors de sa relecture on ne récupérerait que le début du texte crypté et fin serait perdue. ???

    A+.
    tel que c'est fait le fichier généré est binaire, il n'existe pas de caractère de fin de fichier en binaire, éventuellement #27 en mode texte mais c'est tout

    maintenant, la chaîne resultante peut être codée en base64 par exemple afin d'avoir un résultat ascii/texte
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #25
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Re-bonjour,

    A Paul Toth :
    tel que c'est fait le fichier généré est binaire, il n'existe pas de caractère de fin de fichier en binaire, éventuellement #27 en mode texte mais c'est tout
    ... Ok, merci mille fois pour la réponse : ça supprime une inquiétude.

    maintenant, la chaîne resultante peut être codée en base64 par exemple afin d'avoir un résultat ascii/texte
    ... à Coussati de voir s'il veut aller jusque là.

    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #26
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 211
    Points : 55
    Points
    55
    Par défaut
    bonjour desole de rouvrir une ancienne discusion
    mais avec le code de Gilbert Geyer :
    quand je met un texte exemple 123456789
    crypter ou pas il me sort les meme
    desoler pour la reouverture

  7. #27
    Membre actif

    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2009
    Messages : 128
    Points : 203
    Points
    203
    Par défaut
    Bonjour les amis !

    Je viens jouer le revenant, muet depuis des lustres... J'avais abandonné la programmation pour cause de presque cécité (hé 79 ans !), mais sauvé par un ophtalmo de génie. J'en suis donc resté à Delphi7 et ai beaucoup accumulé de retard pour les nouveautés du langage que je ne rattraperai certainement jamais maintenant et j'ai beaucoup levé le pied. Néanmoins je passe de temps en temps sur le forum pour me rappeler le bon vieux temps.

    Et voilà t'il pas qu'hier je tombe sur cette discussion. Le thème du cryptage m'avait beaucoup occupé autrefois avec mon ami Gilbert Geyer (Amical salut vieux frère d'Alsace Lorraine ! ). Si j'ouvre encore (pas souvent) mon vieux Delphi7 perso, c'est pour améliorer mes programmes dédiés à la cryptologie. J'en suis arrivé à deux beaux petits logiciels, l'un qui permet le cryptage des fichiers informatiques à la pelle et l'autre qui permet le cryptage "au vol" de tout ce qui est texte alphanumérique, particulièrement adapté pour chiffrer les écrits de messageries informatiques par l'entremise du presse-papier de Windows. Ils sont tous les deux basés sur le même algorithme de chiffrement particulièrement véloce car écrit et optimisé en ASM. Pour satisfaire tout le monde, je l'ai encapsulé dans une dll :

    CryptoV64.zip
    (bien sûr il faut dézipper pour l'utiliser en .dll, garantie sans virus, foi de Rekin85 )

    A la base de l'informatique, il n'y a que des octets (des bytes comme ils disent). Les programmes, les fichiers, les data, tous ne sont que bytes. Pas plus compliqué que cela et si on veut s'amuser à les crypter, l'opération XOR est merveilleuse car elle est réversible :

    Appelons Byte1 l'octet à crypter, byte2 l'octet clé du cryptage et byte3 l'octet crypté

    Byte1 XOR Byte2 = Byte3
    Donc
    Byte3 XOR Byte2 = Byte1

    Alors, on veut crypter une collection d'octets S1 à l'aide d'une autre collection d'octets que l'on appelle clé S2, on fait subir ce xor à chacun d'eux à la queue leu leu pour obtenir la collection S3 et on pourra revenir à S1 par la même opération avec S3. Bien sûr si on veut que cela résiste bien à la cryptanalyse il faut qu'il n'y ait que très peu de chance de retrouver les octets de la clé... En informatique, il existe les fonctions de hachages et les générateurs congruentiels de nombres pseudo-aléatoires avec lesquels on peut faire de très belles choses...

    Je reviens à la dll de chiffrement, voici comment il convient de l'utiliser avec un programme Delphi :

    1/ Il faut placer CryptoV64.dll dans le même répertoire que le programme appelant.

    2/ Déclarer la seule fonction que contient la dll dans la partie implementation du programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure CrypteV64(PBuf,PKey: pointer; SizeBuf,SizeKey: longWord); stdCall; external'CryptoV64';
    3/ Pour crypter-décrypter une chaîne ou un stream ou ..., on appelle la fonction avec son pointeur en RAM (PBuf), le pointeur sur la clé (PKey) la longueur de la chaîne ou du buffer (SizeBuf), la longueur de la clé (SizeKey) et en vitesse de la lumière, la chaîne ou le buffer est crypté-décrypté.

    Evidemment l'emploi d'une clé secrète sous-entend que celle-ci doit le rester (secrète), ça c'est du ressort de l'émetteur du message et du receveur du message. Quant à la clé elle même, elle doit être assez longue (plus de 8 caractères absolument car sinon l'algorithme n'entre pas en œuvre); moi j'apprécie volontiers un petit vers de Verlaine ou de Rimbaud. Mais attention elle doit être absolument identique au caractère prêt pour le décryptage. Quoi qu'il arrive, l'algorithme donnera toujours sa solution...)

    Attention : la dll s'appelle CryptoV64 et la fonction qu'elle contient s'appelle CrypteV64, ne pas confondre.

  8. #28
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 859
    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 859
    Points : 11 308
    Points
    11 308
    Billets dans le blog
    6
    Par défaut
    Bonjour René,
    Plus encore que de te voir, ce qui fait plaisir est que tu nous voies...
    Vivent les ophtalmos de génie !
    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 !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2012, 15h12
  2. Crypter / Décrypter chaine de caractère
    Par buxbux dans le forum Général Java
    Réponses: 2
    Dernier message: 30/10/2009, 16h09
  3. un simple xor pour crypter décrypter
    Par Montor dans le forum Contribuez
    Réponses: 0
    Dernier message: 24/09/2009, 17h40
  4. crypter/décrypter un URL
    Par mbounou dans le forum Langage
    Réponses: 3
    Dernier message: 23/07/2009, 16h53
  5. Réponses: 2
    Dernier message: 18/03/2009, 14h16

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