Utilisation methode encrypt en C
Sabre
-
sabre -
sabre -
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:
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...
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...
A voir également:
- Utilisation methode encrypt en C
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Objectif 55 200 quelle utilisation - Forum Photo numérique
- Imprimante en cours d'utilisation ✓ - Forum Matériel & Système
- Cliquez sur ce lien. en n'utilisant que le clavier, quel mot obtenez-vous ? ✓ - Forum souris / Touchpad
5 réponses
Salut,
Fais un man encrypt.
key et txt sont des tableaux d'octet uniquement composés des chiffres 0 et 1.
A+, crabs
Fais un man encrypt.
key et txt sont des tableaux d'octet uniquement composés des chiffres 0 et 1.
A+, crabs
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 ?
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.
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.
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question