Les langages de programmation
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Les langages de programmation

Venez apprendre les langages de programmation à votre rythme
 
AccueilGalerieRechercherDernières imagesS'enregistrerConnexion
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

 

 Cryptographie

Aller en bas 
AuteurMessage
koija
Professeur
Professeur
koija


Nombre de messages : 81
Age : 28
Réputation : 11
Date d'inscription : 13/02/2011

Cryptographie Empty
MessageSujet: Cryptographie   Cryptographie Icon_minitimeLun 23 Avr - 10:28

C'est encore moi ! Bon, dans cet exercice, je vous propose quelque chose: créer une fonction qui crypte une chaine de caractère et une autre qui servira à décrypter le résultat obtenu: à revenir au résultat de départ. Si vous voulez, vous pouvez faire avec juste un int, ça peut être aussi pas mal. Le but au final et de comparer nos œuvres.
Revenir en haut Aller en bas
http://koija.no-ip.org
Invité
Invité




Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitimeLun 23 Avr - 17:56

Voici mon code

crypt.c

Code:
void crypter(char result[], char chaine[], int decalage)
{
    int i=0;
    while(chaine[i] != '\0')
    {
        result[i] = ((int) chaine[i] + decalage);
        i++;
    }
}

void decrypter(char result[], char chaine[], int decalage)
{
    int i=0;
    while(result[i] != '\0')
    {
        chaine[i] = ((int) result[i] - decalage);
        i++;
    }
}

int main(void)
{
    char test[] = "test";
    char *res = malloc(MAX * sizeof(char));
    crypter(res, test, 2);
    printf("%s\n", res);
    decrypter(res, test, 2);
    printf("%s\n", test);
    return EXIT_SUCCESS;
}

crypt.h

Code:
void crypter(char result[], char chaine[], int decalage);
void decrypter(char result[], char chaine[], int decalage);

Revenir en haut Aller en bas
koija
Professeur
Professeur
koija


Nombre de messages : 81
Age : 28
Réputation : 11
Date d'inscription : 13/02/2011

Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitimeLun 23 Avr - 20:50

Bien ! Je proposerai mes solutions un peu plus tard Smile ! Si tu veux, si tu détestes les répétitions, j'ai une petite proposition à te faire Smile !
Pour crypter on ajoute la valeur de décalage et pour décrypter on l'enlève.
Donc on peut dire qu'on fait l'opération inverse entre le cryptage et le décryptage.

Ducoup, décrypter revient à utiliser la fonction crypter en prenant la valeur inverse de decalage. Ducoup, on peut arriver à quelque chose comme ça :
Code:

void decrypter(char result[], char chaine[], int decalage)
{
    crypter(result, chaine, 0 - decalage);
}

Voilà ! En tous cas, bien joué pour le code Very Happy !
Revenir en haut Aller en bas
http://koija.no-ip.org
Invité
Invité




Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitimeLun 23 Avr - 21:10

Merci en effet c'est plus élégant, je l'ai fais en 10 minutes top chrono, j'aurais dû réfléchir plus, ça m'apprendra!

Smile
Revenir en haut Aller en bas
koija
Professeur
Professeur
koija


Nombre de messages : 81
Age : 28
Réputation : 11
Date d'inscription : 13/02/2011

Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitimeLun 23 Avr - 21:15

Booh ! Ton code vaut mieux que le mieux en matière de temps d'exécution Wink ! Mais cette différence est tellement petite de nos jours qu'on s'en fiche du temps d'exécution (sauf dans les écoles où les profs sont un peu trop exigeant ^^').
Bref, aujourd'hui, le copier/coller existe alors ta fonction est parfaite Very Happy !
Revenir en haut Aller en bas
http://koija.no-ip.org
koija
Professeur
Professeur
koija


Nombre de messages : 81
Age : 28
Réputation : 11
Date d'inscription : 13/02/2011

Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitimeMer 25 Avr - 21:19

Bon, je propose mon code pour crypter un int. J'ai fais la fonction pour transvaser ce code pour un char mais le problème c'est que un char prend qu'un octet en mémoire et c'est trop peu pour les nombres qu'on atteint.
Voilà à quoi mes fonction ressemble Smile !

Code:

int crypterInt(int nombre)
{
    return (nombre % 2 == 0) ? nombre * 2 : nombre * 3 ;
}

int decrypterInt(int nombre)
{
    return (nombre % 2 == 0) ? nombre / 2 : nombre / 3 ;
}
Revenir en haut Aller en bas
http://koija.no-ip.org
Contenu sponsorisé





Cryptographie Empty
MessageSujet: Re: Cryptographie   Cryptographie Icon_minitime

Revenir en haut Aller en bas
 
Cryptographie
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Les langages de programmation :: Exercices de programmation :: Exercices en C-
Sauter vers: