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

 C Discussion :

Cryptographie en C


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut Cryptographie en C
    Bonjour

    bon, j'ai commencé a faire les codes FCB et CBC , j'ai suivi des conseils mais je sais pas ou je me suis trompé
    il y a toujours des problèmes dans mes programmes

    voila pour le code CBC

    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
     
    int main(void)
    {
    int i,j,Ncl,Nme,l,k[50];
    int m[100],c[50],v[100];
     
    printf("donner la taille du message a crypter=");
    scanf("%i",&Nme);
     
    printf("\n");
     
    printf("donner la taille de la cle a crypter=");
    scanf("%i",&Ncl);
     
    printf("donner le message a crypte \n");
    for (i=0;i<Nme;i++){
      scanf("%i",&m[i]); }
     
    printf("\n");
     
       printf("donner la cle \n");
    for (i=0;i<Ncl;i++){
      scanf("%i",&k[i]); }
     
      printf("donner landa c0=");
      for (i=0;i<Ncl;i++){
        scanf("%i",&v[i]);  
       }
     
    for (i=0;i<Nme;i=i+Ncl){
        for(j=0;j<Ncl;j++){
         if(j==0){ for(l=0;l<Ncl;l++){m[i+l]=m[i+l]xor(v[l]);}}                 
        c[i+j]=m[i+k[j]-1];
        v[j]=c[i+j];}}
     
    printf("le message est \n");
    for (i=0;i<Nme;i++){
     
    printf("%i",c[i]); }
     
    getch();
    }

    et voila le code fcb

    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
    49
    50
    51
    52
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
     
    int main(void)
    {
    int r,i,j,Ncl,Nme,o[50],w,k[50],m[100],c[100],v[100];
     
    printf("donner la taille de message a crypter=");
    scanf("%i",&Nme);
     
    printf("\n");
     
    printf("donner la taille de la clé=");
    scanf("%i",&Ncl);
     
    printf("donner le message a crypter \n");
    for (i=0;i<Nme;i++){
      scanf("%i",&m[i]); }
     
    printf("\n");
     
    printf("donner la cle \n");
    for (i=0;i<Ncl;i++){
    scanf("%i",&k[i]); }
     
    printf("donner la taille de r =");
    scanf("%i",&r);
     
    printf("\n");
     
    printf("donner landa c0=\n");
    for (i=0;i<Ncl;i++){
    scanf("%i",&v[i]);}
     
       for (i=0;i<Nme;i=i+Ncl){
         if (i!=0){
     
    for(j=0;j<Ncl;j++){
    o[i+j]=v[i+k[j]-1];}
     
    for (w=Ncl-r-2;w<Ncl;w++){
    c[i+j]=o[w]xor(m[i+j]);}
    }
    }
     
    printf("le message est \n");
    for (i=0;i<Nme;i++){
    printf("%i",c[i]); }
     
    getch();
    }
    aidez moi svp et merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Quel est le problème ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    je sais pas ou exact les deux algorithmes sont juste, peut etre j ai oublié une instruction ou j ai met une instruction au plus je suis nul en c
    chaque fois j ai des problemes a mes programme

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nounou nu Voir le message
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (i=0;i<Nme;i=i+Ncl){
        for(j=0;j<Ncl;j++){
         if(j==0){ for(l=0;l<Ncl;l++){m[i+l]=m[i+l]xor(v[l]);}}
    je sais pas ou exact les deux algorithmes sont juste, peut etre j ai oublié une instruction ou j ai met une instruction au plus
    Bonjour

    Commence déjà par écrire proprement ton code parce que ça, c'est illisible !!!
    Et je ne connais pas l'instruction "xor" (déjà qu'il n'y a ni "and" ni "or" dans le C que je connais). Quoi qu'il en soit, mon compilo non plus...

    Citation Envoyé par nounou nu Voir le message
    je suis nul en c
    Ben tant pis, on ne pourra pas être bons "à ta place" !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par nounou nu Voir le message
    je sais pas ou exact les deux algorithmes sont juste, peut etre j ai oublié une instruction ou j ai met une instruction au plus je suis nul en c
    chaque fois j ai des problemes a mes programme
    Bonjour,

    Sans plus d'information qu'un "ça marche pas" et avec un code non indenté, on ne pourra pas trop t'aider.
    Pourquoi es-tu si sur que l'algorithme fonctionne ? Sinon, pourquoi nous demanderais-tu de l'aide ?

    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Commence déjà par écrire proprement ton code parce que ça, c'est illisible !!!
    Et je ne connais pas l'instruction "xor" (déjà qu'il n'y a ni "and" ni "or" dans le C que je connais). Quoi qu'il en soit, mon compilo non plus...


    Ben tant pis, on ne pourra pas être bons "à ta place" !!!
    Bonjour,

    Pour le xor, c'est un opérateur bit à bit du C .

    La syntaxe étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int a = 1;
    int b = 0;
    int c;
     
    c = a ^ b;
    Très utile quand on souhaite, dans une boucle par exemple, changer la valeur d'une variable a 1 et a 0 à chaque tour de boucle.
    ( Et accessoirement pour échanger deux variable entière sans utiliser une troisième variable. )

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Les opérateurs logiques and, or et xor (de même que not ) n'existent qu'en C++ et pas en C.

    En C (et même en C++) , on utilise && et ||, mais il n'existe pas d'opérateur pour xor (dans un autre langage j'ai souvenir d'un&|, dommage de ne pas avoir la même chose en C^^ ).

    Es-tu sûr de bien compiler en C ?

  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par archMqx. Voir le message
    Pour le xor, c'est un opérateur bit à bit du C .

    La syntaxe étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int a = 1;
    int b = 0;
    int c;
     
    c = a ^ b;
    Nan mais sans déconner, je fais du C depuis assez longtemps, je connais parfaitement l'opérateur xor et ses propriétés !!!
    J'ai dit que je ne connaissais pas l'instruction xor (utilisée telle quelle dans le code), tu sens la nuance ???

    Citation Envoyé par archMqx. Voir le message
    ( Et accessoirement pour échanger deux variable entière sans utiliser une troisième variable. )
    Ca ne fonctionne pas dans le cas où tu écris une fonction dédiée à ce travail et que tu y passes deux fois l'adresse de la même variable
    Exemple
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void permute(int *a, int *b)
    {
        *a=(*a)^(*b);
        *b=(*a)^(*b);
        *a=(*a)^(*b);
    }
     
    int main()
    {
        int x=5, y=6;
        permute(&x, &y);        // Fonctionne
        permute(&x, &x);        // Ne fonctionne pas
    }

    Alors que cette fonction ci
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void permute(int *a, int *b)
    {
        int tmp;
     
        tmp=*a;
        *a=*b;
        *b=tmp;
    }
    fonctionnera dans toutes les configurations...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Les opérateurs logiques and, or et xor (de même que not ) n'existent qu'en C++ et pas en C.

    En C (et même en C++) , on utilise && et ||, mais il n'existe pas d'opérateur pour xor (dans un autre langage j'ai souvenir d'un&|, dommage de ne pas avoir la même chose en C^^ ).

    Es-tu sûr de bien compiler en C ?
    iso646.h

  9. #9
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par foetus Voir le message
    Si c'est dans la bibliothèque standard, ce n'est donc pas directement intégré au langage contrairement au C++ où le compilateur reconnaît tout seul les opérateurs sans besoins de fichiers d'en-tête.

    D'ailleurs je maintient ce que j'ai dit, en C, ce ne sont pas des opérateurs mais des define.
    Mais je dois avouer que je ne connaissais pas ce fichier d'en-tête, en même temps on n'utilise jamais "and", "or", et consort.

    Il vaut mieux, en effet, éviter ces "identifiants", pour éviter les confusion, xor n'est pas un xor logique mais un bitxor !
    C'est dingue qu'une chose aussi sale soit passée dans la norme C++ d'ailleurs, moi qui pensait que xor était l'opérateur logique

    Et comme dans son code on ne vois pas l'inclusion de iso64.h, on peut bien se demander s'il ne compile pas en C++.

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    On dirait Garcimore qui tente de nous faire croire que les lapins viennent du chapeau.
    Comme neckara, ce n'est pas parce que tu définis un truc dans un ".h" que tu peux dire que ça existe.
    Quand on parle "d'existence" en C, on veut parler des mots clefs directement reconnus par le compilo. C'est trop facile sinon d'aller définir n'importe quoi pour dire ensuite que ça existe.

    Accessoirement c'est dommage que "&" soit associé à "bitand" ; que "|" soit associé à "bitor" et que "^" soit associé à "xor" et non "bitxor". Ca doit générer une grosse confusion difficile à relire quand on mélange les trois opérateurs dans une même expression (surtout si on y rajoute du "and" et du "or" en plus...). Là aussi je m'étonne de ce ".h" aussi maladroitement écrit (ça aurait été facile de créer le vrai "xor" logique et de nommer l'opérateur bit à bit "bitxor" pour être cohérent avec les autres...)

    En plus, Iso646.h n'est pas inclus dans le source du PO
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    ....
    Mea Culpa.
    Je pensais être dans le bon... J'aurai appris quelque chose au moins.

Discussions similaires

  1. [C#] Cryptographie par clefs privée/publique
    Par dev01 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/08/2011, 21h44
  2. Hackers pour tests d'un système de cryptographie
    Par duchere dans le forum Algorithmes et structures de données
    Réponses: 32
    Dernier message: 27/07/2005, 13h46
  3. Cryptographie
    Par dynobremo dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/05/2005, 17h35
  4. Cherche algo de cryptographie
    Par Oberown dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 16/09/2004, 09h02
  5. [C#] Xml et la cryptographie
    Par freddyboy dans le forum C#
    Réponses: 14
    Dernier message: 01/06/2004, 13h55

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