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 :

Cryptage avec XOR du signe euro


Sujet :

Delphi

  1. #1
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut Cryptage avec XOR du signe euro
    Bonjour à tous,

    Je teste actuellement l'écriture et la lecture de fichier avec cryptage/décryptage avec le XOR et la fonction que j'ai marche pour tout les caractères sauf le caractère '€' pour qui, suite au décryptage, je me retrouve avec un autre caractère qui diffère suivant la position du signe euro dans le texte (jusqu'à présent je me retrouve avec soit un chiffre soit un point virgule suite au décryptage): comment faire?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 444
    Points : 5 864
    Points
    5 864
    Par défaut
    salut

    comment fait tu ton cryptage ?

    voici une réponse faite sur ce forum il y a déjà quelque temps ^^
    developpez delphi cryptage xor cle variable/

  3. #3
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Voici ma fonction ce sera plus simple:
    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
    function TForm1.XorStr(Str: String; Key: LongInt): String;
    var
      i:integer;
      j:integer; // Sélection du Jième caractère de la clé
      StCrypt:string;
      StrKey:string;
    begin
      StCrypt:=''; //Initialise la variable
      StrKey := IntToStr(Key);
      j := 1;
     
      for i:=1 to Length(Str) do // Pour tous les caractères de notre chaine
      begin
        if j=Length(StrKey) then
          j:=1;
     
        StCrypt:=StCrypt+Char(ord(Str[i]) xor StrToInt(StrKey[j])); // On effectue le cryptage
     
        j := j+1;
      end;
      result:=StCrypt; //Renvoie le résultat
    end;
    Pour l'instant la clé ne peut être qu'une suite de chiffre, préférant commencer par quelque chose de "simple" et complexifier par la suite.

  4. #4
    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 266
    Points
    3 266
    Par défaut
    Bonjour,

    Sinon il y a ici une solution intéressante library CryptoV64 : http://www.developpez.net/forums/d14...-epilogue-2-a/

    et qui constitue l'achèvement de cette discussion : http://www.developpez.net/forums/d14...ier-byte-byte/

    A+.

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Bonjour,
    Citation Envoyé par seb68270 Voir le message
    Je teste actuellement l'écriture et la lecture de fichier avec cryptage/décryptage avec le XOR et la fonction que j'ai marche pour tout les caractères sauf le caractère '€' pour qui, suite au décryptage, je me retrouve avec un autre caractère qui diffère suivant la position du signe euro dans le texte (jusqu'à présent je me retrouve avec soit un chiffre soit un point virgule suite au décryptage): comment faire?
    Le fichier utilise quel format d'encodage ? ANSI ? Unicode ?

  6. #6
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Bonjour,
    Le fichier utilise quel format d'encodage ? ANSI ? Unicode ?
    Bonjour,

    Le moment boulet de la journée: je ne sais pas ... On vérifie ça comment?

  7. #7
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Points : 5 918
    Points
    5 918
    Par défaut
    Citation Envoyé par seb68270 Voir le message
    Le moment boulet de la journée: je ne sais pas ... On vérifie ça comment?
    Un éditeur de texte comme Notepad++ indique le format d'encodage du fichier texte.

    De plus quelle est la version de Delphi utilisé (jusqu'à 2007 les chaines sont ansi, à partir de 2009 les chaines sont unicode) ?

  8. #8
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Un éditeur de texte comme Notepad++ indique le format d'encodage du fichier texte.

    De plus quelle est la version de Delphi utilisé (jusqu'à 2007 les chaines sont ansi, à partir de 2009 les chaines sont unicode) ?
    J'ai ouvert le fichier txt avec Notepad++ et, quand je clique sur "Encodage", j'ai "Encoder en UTF-8 (Sans BOM)" de sélectionner.

    Pour ce qui est de la version de Delphi, j'utilise Delphi 2010.

  9. #9
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Un éditeur de texte comme Notepad++ indique le format d'encodage du fichier texte.

    De plus quelle est la version de Delphi utilisé (jusqu'à 2007 les chaines sont ansi, à partir de 2009 les chaines sont unicode) ?
    N'ayant toujours pas de solution à ce problème, je me permets de venir relancer: ce serait quel format d'encodage qu'il faudrait utiliser pour que la méthode de cryptage que j'utilise fonctionne correctement ?

  10. #10
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 885
    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 885
    Points : 11 403
    Points
    11 403
    Billets dans le blog
    6
    Par défaut
    pê utiliser dans la routine des AnsiString (codage des caractères sur un octet) ou tableau d'octets pour XORiser, puis les afficher comme String (UTF-8 = stockage de certains caractères dans plus d'un octet).

  11. #11
    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 266
    Points
    3 266
    Par défaut
    Bonjour,

    Seb68270 : N'ayant toujours pas de solution à ce problème,
    As-tu au moins essayé la library CryptoV64 que j'ai citée dans mon message #4 du 23/01/2015, 11h32 ???
    Car avant de la citer j'ai vérifié que le caractère '€' est correctement crypté/décrypté avec elle.
    En plus on n'est pas obligé de l'utiliser telle qu'elle pour en créer la DLL puisqu'il suffit d'en extraire la routine et la coller dans son propre code.

    A+.

  12. #12
    En attente de confirmation mail
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 81
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    pê utiliser dans la routine des AnsiString (codage des caractères sur un octet) ou tableau d'octets pour XORiser, puis les afficher comme String (UTF-8 = stockage de certains caractères dans plus d'un octet).
    Ok je vais voir ça ...

    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,



    As-tu au moins essayé la library CryptoV64 que j'ai citée dans mon message #4 du 23/01/2015, 11h32 ???
    Car avant de la citer j'ai vérifié que le caractère '€' est correctement crypté/décrypté avec elle.
    En plus on n'est pas obligé de l'utiliser telle qu'elle pour en créer la DLL puisqu'il suffit d'en extraire la routine et la coller dans son propre code.

    A+.
    Comme j'avais dit pus haut, je préfère commencer avec quelque chose de plus "basique" niveau cryptage: je verrai ça après.

  13. #13
    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
    Je pense que les difficultés rencontrées par seb68270 résident dans le fait qu'il tente de crypter une string à l'aide d'une string de 4 octets... Qui dit string dit format d'encodage (!?)...

    Le "truc" en cryptage c'est d'ignorer les caractères et de ne s'occuper que des valeurs numériques... Donc on oublie la variable string et on travaille sur une collection d'octets (l'idéal c'est le stream).

  14. #14
    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
    Bonsoir,

    Je reviens sur ma remarque du 02/02/2015 car elle peut paraître un peu sibylline. Ce que je voulais dire c'est qu'une string, si elle est utilisée dans un contexte particulier (RichEdit par ex.), peut très bien avoir été "manipulée" par le conteneur (encodage, caractères de contrôle...). Donc pour crypter-décrypter, il ne faut considérer que les octets consubstantiels à la string d'origine... Hum, je ne sais pas si j'ai été bien clair.

    Maintenant je voudrais signaler à Seb68970 que le cryptage simple xor par blocs avec une clé immuable est le plus facile à cryptanalyser. Prenons un exemple :

    Voici quelques octets du début d'un fichier bmp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF 00 80 80 FF
    et voici les mêmes octets cryptés simple xor avec une clé de 8 caractères :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E0 40 1D 17 0C 1D 0E F5 E0 40 1D 17 0C 19 0E F5 E0 40 1D 17 0C 19 0E F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1 F5 60 C0 E2 17 8C 99 F1
    Les plus perspicaces y verront un pattern se dessiner et se répéter à causes des nombreuses redondances du fichier d'origine... Il est donc nécessaire de "chiader" la méthode de cryptage (ou d'en changer). A titre d'exemple, voici les mêmes octets cryptés avec la même clé mais dont les bits font un décalage à gauche à chaque tour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    2F 41 06 1D A3 51 7B 57 5F 82 0D 3A 46 AB F6 AE BE 04 1A 74 8C 56 ED 5D FD 89 CB E8 98 2D 25 BB 7A 92 97 D0 B1 DA 4A 77 75 A5 2F A0 E3 34 95 EF 6A CB 5F 41 47 E8 2A DE 55 17 BE 83 0E 51 55 BD 2B AF 7D 06 9D 23 AA 7B D7 DF FB 0D BA C6 54 F6 2E 3E F6 1A F4 0C A9 ED DD FD ED 34 68 98 52 DA 3B 7A DA 68 50 B1 A5 B5 F7 75 B4 D0 20 E3 4B 6A 6F 6A 68 A0 C1 47 97 D5 5E 55 D0 41 03 0E 2E AA 3D 2B A0 82 86 9D 5C
    C'est déjà mieux non ?

Discussions similaires

  1. [PHP 5.3] Problème avec apostrophe et signe euro
    Par galak6 dans le forum Langage
    Réponses: 5
    Dernier message: 01/02/2012, 16h11
  2. Problème avec le signe euro (€)
    Par linar009 dans le forum Administration système
    Réponses: 4
    Dernier message: 18/03/2007, 23h07
  3. [ImageMagick] imagettftext et signe euro ?
    Par laurent_h dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/07/2006, 17h43
  4. cryptage avec HSQLDB
    Par chti_juanito dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 03/05/2006, 09h44
  5. [C#] Problème signe EURO
    Par gumma dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/06/2005, 18h16

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