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 :

cryptage en mode bit


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 2
    Par défaut cryptage en mode bit
    salut ,je cherche des commande en c ou c++ qui permet de diviser le mot octect en des bit pour l'algorithme de cryptage DES

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu peux essayer une structure avec 8 champs de bits de un bit et tu decomposes ton octet avec les decalages de bits.
    Il y a peut etre une meilleur solution, attendons de voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct {
        unsigned a:1;
        unsigned b:1;
        unsigned c:1;
        unsigned d:1;
        unsigned e:1;
        unsigned f:1;
        unsigned g:1;
        unsigned h:1;
    }Bit;

  3. #3
    Membre éprouvé Avatar de kaisse
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Par défaut
    Tu ne peux pas "manipuler" directement un bit et lui faire subir des opérations quelconques. Tu peux passer par un champ de bits comme le montre Skyrunner mais celà pose plusieur problèmes:
    - la norme ne garantit nullement que la taille de ta struct sera la taille minimale nécessaire pour contenir les 8 bits. En gros, ta struct peut faire plus d'un octet, même si tu ne peux accéder et modifier que 8 de ses bits.
    - Enfin, écrire directement une struct dans un fichier n'est pas une bonne chose.

    Il te faut ouvrir les fichiers que tu veux traités en mode binaire, puis extraire les bytes (!= octet dans le cas général, mais si tu travailles sur un x86 c'est la même chose. Vérifie ce que vaut ta macro CHAR_BITS pour être sur) à l'aide de fread.
    Ensuite, tu les considères comme des unsigned char au lieu de simple char, ce qui te permettra de les manipuler avec les opérateurs sur les bits (>>, <<, |, &, ~).

    Tu peux ensuite extraire des bits, en stockant leur valeur dans un unsigned char par exemple, et travailler dessus, en faisant bien attention de garder des valeurs cohérentes (0 ou 1).

    Il faut ensuite restocker tous tes bits dans des unsigned char (autant que tu en as lu dans le fichier original) toujours à l'aide des opérateurs, et les écrire dans le fichier de sortie à l'aide de fwrite.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Skyrunner
    Tu peux essayer une structure avec 8 champs de bits de un bit et tu decomposes ton octet avec les decalages de bits.
    Il y a peut etre une meilleur solution, attendons de voir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef struct {
        unsigned a:1;
        unsigned b:1;
        unsigned c:1;
        unsigned d:1;
        unsigned e:1;
        unsigned f:1;
        unsigned g:1;
        unsigned h:1;
    }Bit;
    Le problème des champs de bits est que l'ordre des bits ainsi que la taillle de la structure dépend de l'implémentation. Il vaut mieux utiliser les opérateurs bits qui sont portables.

    Grillaid!

  5. #5
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Oui mais lui il veut travailler avec les bits si j'ai bien compris.
    Donc si dans son code il fait comme ca
    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
     
    typedef struct {
        unsigned a:1;
        unsigned b:1;
        unsigned c:1;
        unsigned d:1;
        unsigned e:1;
        unsigned f:1;
        unsigned g:1;
        unsigned h:1;
    }Bit; 
     
    void fonction(void) {
    char test='a';
    Bit decompo;
    decompo.a = test << 1;
    decompo.b = test << 1;
    decompo.c = test << 1;
    ...
    }
    Il saura tres bien ce qu'il y aura dans les champs de sa structure non?

    Grillaid!
    Kesako?

  6. #6
    Membre éprouvé Avatar de kaisse
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 100
    Par défaut
    Citation Envoyé par Skyrunner
    Oui mais lui il veut travailler avec les bits si j'ai bien compris.
    Donc si dans son code il fait comme ca
    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
     
    typedef struct {
        unsigned a:1;
        unsigned b:1;
        unsigned c:1;
        unsigned d:1;
        unsigned e:1;
        unsigned f:1;
        unsigned g:1;
        unsigned h:1;
    }Bit; 
     
    [code]void fonction(void) {
    char test='a';
    Bit decompo;
    decompo.a = test << 1;
    decompo.b = test << 1;
    decompo.c = test << 1;
    ...
    }[/code]
    Il saura tres bien ce qu'il y aura dans les champs de sa structure non?
    Tu veux dire si il fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void fonction(void) {
    unsigned char test='a';
    Bit decompo;
    decompo.a = test & 0x1;
    decompo.b = (test << 1) & 0x1;
    decompo.c = (test << 2) & 0x1;
    ...
    }
    Dans ce cas là, oui, effectivement. Il faudra ensuite une fonction similaire pour
    re-remplir les char. Mais je sais pas si c'est vraiment plus pratique dans le cas d'un algorithme de chiffrement tel que le DES.

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Tu veux dire si il fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void fonction(void) {
    unsigned char test='a';
    Bit decompo;
    decompo.a = test & 0x1;
    decompo.b = (test << 1) & 0x1;
    decompo.c = (test << 2) & 0x1;
    ...
    }
    Oups exact. (sacré copier-coller)

Discussions similaires

  1. Recherche de tutoriels + (mode graphique 1024*768 32 bits)
    Par Belegkarnil dans le forum Assembleur
    Réponses: 1
    Dernier message: 12/04/2006, 13h15
  2. Compilateur C 16 bits mode réel
    Par jfg31 dans le forum C
    Réponses: 10
    Dernier message: 11/03/2006, 10h40
  3. Réponses: 17
    Dernier message: 19/02/2005, 19h36
  4. Modes de couleur 16-bits
    Par Mark53 dans le forum DirectX
    Réponses: 4
    Dernier message: 12/10/2004, 21h49
  5. Machine 32 bits - cryptage 128 bits
    Par free0pen dans le forum Assembleur
    Réponses: 6
    Dernier message: 02/04/2004, 20h14

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