Utilisation methode encrypt en C

Fermé
Sabre - 13 mai 2005 à 21:33
 sabre - 15 mai 2005 à 23:45
Bonjour,
je travail sur un serveur en réseau, et pour cela je dois crypter des messages avec la méthodes encrypt(mot_de_passe, flag).
Voici mon bout de code:

char pawd[10] = "maison";
setKey("BD");
encrypt(pawd,0);
printf("le mot de passe chrypté : %s\n",pawd);
encrypt(pawd,1);
printf("le mot de passe décrchrypté : %s\n",pawd);


Le problème c'est que le printf n'affiche jamais rien.
Je me suis dis que s'était une histoire de sécurité mais non car avec le mot déchrypté je fais un test de comparaison et jamais le mot n'est reconnu!

Un peu d'aide serait la bien venue...

5 réponses

crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
14 mai 2005 à 08:50
Salut,
Fais un man encrypt.
key et txt sont des tableaux d'octet uniquement composés des chiffres 0 et 1.

A+, crabs
0
Oui mais en ses cas la si ce sont des vecteurs d'octets égales à 0 ou 1 comment fait on pour récupérer le mot de passe initial ?
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
14 mai 2005 à 21:18
Chaque octet se répresente sous la forme de 8 bits -> 8 '0' ou '1'.
En ASCII, chaque lettre occupe un octet.
Les tableaux font 64 bits, soit 8 octet ou 8 lettres ASCII.
CRYPTAGE
Si le mot de passe fait plus de 8 lettres tu le cryptes en boucle de 8, la dernière
boucle 'bourre' avec des '0' le tableau à crypter
Tu convertis en binaire chaque lettre. tu cryptes, tu met dans
un buffer que tu complète au fur à mesure des boucles.
DECODAGE
tu exploite le buffer par boucle de 64 octects,
du décode à l'aide de encrypt().
tu converti le binaire en caractère en reconstruisant l'octet.
Dès que tu as un caractère '\0' tu arretes ton traitement.
0
Merci c'est cool j'ai compris
si le mot de passe fait 8 lettres pas de problème
sinon je prend un buffer d'au moins la taille de [nombre de caractères * 8 +1] je crypte caractère pas caractère que je stocke au fur et à mesure dans le buffer.
Et quand je décrypte j'exploite le buffer.

Mais j'ai une question: Pourquoi je dois bourrer la dernière boucle avec des 0 ?
Et connais tu une fonction qui te convertis des caractère en binaire?

Merci
0
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
15 mai 2005 à 00:37
Re,
C'est presque ça, Il faut crypter par 8 caractères, soit à chaque boucle un
offset de 64 octets (0 ou 1).
La taille du buffer sera (nb_caractere/8+1)*8 * 8 (faire le calcul avec un int)
L'operation (nb_caractere/8+1)*8 permet d'obtenir le multiple de 8
directement supérieur ou égal à nb_car+1 (taille de la chaine + '\0').
Je ne suis pas trop rentré dans les détails de cet algo, mais il fonctionne avec
des permutations et opération logique en fonction de la clé sur des mots de 64
bits. En bourrant à 0 t'es sur d'avoir initialisé correctement ce mot de 64 bits.

Pour la fonction de conversion en binaire, je connais pas la fonction qui
permet ça.
0

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

Posez votre question
merci de ton aide elle a été très précieuse
0