Fonction Crypto (XOR)

Résolu
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 26 août 2007 à 09:50
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 26 août 2007 à 13:36
Bonjour à tous.
J'ai fait une fonction de Crypto en XOR et évidemment, ça ne fonctionne pas
Pourriez-vous me dire si c'est l'appel qui pose problème ou la fonction ??




#include <stdio.h>
#include <stdlib.h>
#include "Crypto.h"

int main(int argc, char *argv[])
{
    char machaine[17]="Bonjour le monde";
    char macle[18]="ma clef secrete!!";
    char res[17];
    Crypto(&machaine,&macle,&res);
    printf("Str: %s\n",machaine);
    printf("Key: %s\n",macle);
    printf("Res: %s\n",res);
    system("PAUSE");
    return 0;
}


void Crypto(char* Str[], char* Key[], char* Dest[])
{
      char pKey=0, lKey=0;
      char pStr=0, lStr=0;
      lKey = strlen(*Key);
      lStr = strlen(*Str);
      while (pStr<=lStr)
      {
            *Dest[pStr] = *Str[pStr] ^ *Key[pKey];
            pStr++;
            pKey++;
            if (pKey>lKey)
               pKey=0;
      }
}



_______________________________________________________________________


VB.NET
is good ...
VB6
is better <f></f>
A voir également:

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 août 2007 à 13:36
Je vais répéter ce qui convient en pareil cas.
Sauvegarde si tu veux ton VB où tu voudras mais surtout efface le de ton disque dur, ça t'évitera de le regarder pour coder en C.
On code en C en pensant adresse et pointeur, tout ce qui était impossible en interprété, pour cela qu'il faut se débarrasser le crane des scories et faux concepts de l'interprété.

ciao...
BruNews, MVP VC++
3
cs_asako Messages postés 3 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 26 août 2007
26 août 2007 à 10:47
Bonjour,

essaye :
crypto(machaine,macle,res);
 
et en déclaration de crypto :
void crypto(char *chaine, char *key, char *dest);

++
0
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
26 août 2007 à 10:56
Bon, avant de continuer, un conseil reprend un bon bouquin sur le C.

Tu passes de VB au C ?

Ta fonction crypto possède au moins 2 bugs par ligne de code et ne peut absolument pas fonctionner...
De plus, ces bugs montrent que tu n'a pas encore compris et assimilé des principes de base de C (tableaux, pointeurs, ...)

Si je reprends ton algo et que le rend compilable cela donne :



void Crypto(char* Str, char* Key, char* Dest)
{
    char *pStr=Str, *pKey=Key, *pDest=Dest;

    while (*pStr)
    {
        *pDest++ = (*pKey++) ? (*pStr++ ^ *pKey++) : 0;
    }
}

Ce code fonctionne et compile mais inutilisable car aucun contrôle n'est effectué.
Faut aussi corriger le main qui fouarre..

Mais, honnêtement, prend un bouquin sur le C et apprend en premier... Passer de VB au C n'est si évident...
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 août 2007 à 12:52
[auteurdetail.aspx?ID=564300
]

Quand je mets
char pStr=0 , pStr c'est le numéro du car. dans la chaîne...

_______________________________________________________________________


VB.NET
is good ...
VB6
is better <f></f>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
26 août 2007 à 12:54
Ca vient de ce code (VB)
Public Function Crypto(Text As String, Key As String) As String
Dim i As Integer
Dim tmp As String
Dim pK As Integer
Dim lT As Integer, lK As Integer
Dim aT As Integer, aK As Integer
lT = Len(Text)
lK = Len(Key)
For i = 1 To lT
 pK = pK + 1
 If pK > lK Then pK = 1
 aT = Asc(Mid(Text, i, 1))
 aK = Asc(Mid(Key, pK, 1))
 tmp = tmp & Chr(aT Xor aK)
Next i
Crypto = tmp
End Function
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
Rejoignez-nous