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

Langage Delphi Discussion :

[delphi 7 perso] Cryptage XOR et assembleur


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [delphi 7 perso] Cryptage XOR et assembleur
    Bonjour à tous,

    Tout d'abord je tiens à préciser que je sais pertinament qu'un cryptage XOR n'est pas des plus sur mais ce qui m'interresse c'est la rapidité.
    C'est pourquoi j'en appelle au volontaire maitrisant l'assembleur inline dans delphi pour implémenter un cryptage XOR.

    Je désire coder un TMemoryStream (appelé st) avec un clé de 256 octet
    (var key:array[0..255] of byte

    Ca ne doit pas être trop compliqué.
    Merci d'avance
    Cordialement
    Loran

    (P.S j'en ai fait un en Delphi mais j'en voudrais un en assembleur)

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Et quel est ton code en Delphi ?
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Inactif
    Inscrit en
    Août 2005
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 78
    Points : 68
    Points
    68
    Par défaut
    ça ne sert a rien de se proteger enormément il existe un logiciel qui existe qui décompile votre programme delphi allez voir mon sujet "misère....."

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 82
    Points : 85
    Points
    85
    Par défaut
    Conficius

    Inscrit le: 09 Aoû 2005

    Messages: 90


    vivement la rentrée...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Nono40
    Et quel est ton code en Delphi ?
    Salut,
    Je n'avais pas filer le code car je n'était pas sur l'ordianteur sur lequel je programme.
    Par ailleurs, je ne pense pas (je me trompe peut-être) qu'une traduction littérale soit intéressante, j'utilise un buffer pour la liaison avec les TMemoryStream, mais cela ne sera pas utile ne assembleur.
    J'avais, il y à longtemps sous DOS des notions d'assembleur mais il me manque le lien enter Delphi et l'assembleur en ce qui concerne les accès à la mémoire. Comment faire le lien avec les variable key et st?)

    Voici donc le code.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    procedure  crypt(var st:tmemorystream);
    var pass:string;
        i,j,l,currentpos,nb,pos:longint;
        c,r:byte;
        buf:array[0..8191] of byte;
        key:array[0..255] of byte;
    begin
     
    pass:='Le pass de 64 octets finalement j'en prend 64 et non plus 256';
     
    l:=length(pass);
     
    for i:=1 to l  do
      begin
      key[i-1]:=ord(pass[i]);
      end;
     
     
    st.Position:=0;
     
     
    // partie à traduire en assembleur
    currentpos:=0;
    j:=0;
    while (currentpos<st.size-1)
    	do
    	begin
    	pos := st.Position;
    	nb := st.Read(buf,8191);
    	currentpos:=currentpos+nb;
     
    	for i:= 0 to nb do
    	    begin
    	    buf[i]:=buf[i] xor (key[j]);
    	    inc(j);
    	    if j>=l then j:=0;
    	    end;
    	st.position:=pos;
    	st.Write(buf,nb);
    end; // while
     
     
    // fin de la mise en assembleur
    st.position:=0;
     
     
    end;
    Merci de ton attention
    Cordialement
    Loran

    P.S.

    Citation Envoyé par Auteur Message
    the_magik_mushroom Posté le: Jeu Aoû 18, 2005 0:57 Sujet du message:

    --------------------------------------------------------------------------------

    Conficius

    Inscrit le: 09 Aoû 2005

    Messages: 90


    vivement la rentrée...


    Conficius
    ça ne sert a rien de se proteger enormément il existe un logiciel qui existe qui décompile votre programme delphi allez voir mon sujet "misère....."
    Peut importe.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Ton code n'est pas optimisé du tout, au lieu de faire des xor entre octets tu peux faire des xor entre mots de 32bits.

    Il faut une partie pour traiter les xor sur 32bits et du code pour finaliser dans le cas où la taille du buffer n'est pas un multiple de 4.

    Il y a d'autres optimsations possible, après cela dépend de la taille des buffers utilisés.

    Pourquoi tu ne lis pas un nombre multiple de 4 dans ton stream (par ex 8192) ?

Discussions similaires

  1. [Composant] BDD avec Delphi 6 Perso
    Par Manopower dans le forum Bases de données
    Réponses: 5
    Dernier message: 17/02/2005, 09h47
  2. {delphi 6 Perso} Palette de Composant
    Par dudux dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 14/10/2004, 15h20
  3. delphi 6 perso +mysql
    Par o_live dans le forum Bases de données
    Réponses: 7
    Dernier message: 06/10/2004, 15h03
  4. [réglé]Delphi 7 perso et base .dbf
    Par ced00 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/05/2004, 00h03

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