Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

l?algorithme 3DES en C++

Posté par
agusastra
21-05-21 à 14:14

Bonjour,
J'ai un projet  qui consiste à implémenter un algorithme de chiffrement pour chiffrer et déchiffrer un fichier.
Quelqu'un peut m'aider svp ?
Merci par avant.

a) Classe Sequence
La classe Sequence permet de modéliser des séquences de bits. Ces séquences devront être stockées dans des objets de type deque. Cette classe comprendra :
? Un constructeur prenant en paramètre un entier correspondant à la taille de la séquence. Les valeurs des bits sont données aléatoirement. On prévoit une valeur par défaut pour l?argument entier (qui sera de 4).
? Un second constructeur qui construit une Sequence à partir d?un objet de type list de Sequence. La séquence ainsi créée sera la concaténation des séquences contenues dans la liste.
? L?opérateur [] qui permettra d?accéder (et potentiellement modifier) un bit de la séquence.
? L?opérateur () qui renverra la valeur d?un bit sans permettre de la modifier (fonction
« constante »).
? Une fonction membre size qui renvoie le nombre de bits de la séquence.
? L?opérateur = lorsque le second opérande est un entier. Cet opérateur va affecter à la
Sequence la valeur (en binaire) correspondant à l?entier donné en paramètre. Cette opération ne modifier pas la taille de la séquence (si la valeur est trop grande, certains bits ne seront pas stockés).
? Une fonction membre decalage qui prendra en paramètre un entier et qui effectuera un décalage à gauche des bits de la séquence d?autant de bits qu?indiqué par le paramètre entier. Les bits qui sortent par la gauche sont réinjectés par la droite. Par exemple, si la séquence est 10010, un décalage à gauche de 2 bits produira la séquence 01010. Cette fonction modifiera la Sequence appelante et ne renverra rien.
? L?opérateur * sera redéfini pour deux Sequence (de même taille) et renverra une Sequence correspondant au résultat du « ou exclusif » (XOR) entre les deux séquences données en paramètres.
? Une fonction membre permutation qui prend en paramètre un objet de classe vector d?entiers décrivant la permutation. Le vecteur représente la permutation de  manière analogue à ce qui est présenté dans le document décrivant l?algorithme : la taille de
la nouvelle séquence correspond à la taille du vecteur, et la valeur à l?indice i du vecteur
correspond à l?indice (dans la séquence donnée en paramètre) du bit qui sera mis à la
position i de la nouvelle séquence. Cette fonction membre ne modifie pas la séquence
appelante et renvoie la séquence résultante de la permutation.
? La fonction membre sous_sequence qui prend en paramètre deux indices correspondant au début et à la fin de la sous-séquence. Cette fonction membre va renvoyer une Sequence qui correspond à la sous-séquence entre les deux indices donnés en paramètre.

Posté par
NoPseudoDispo
re : l?algorithme 3DES en C++ 23-05-21 à 22:37

Slt, en général la programmation on trouve les solutions tout seul.
Qu'est ce que tu n'arrives pas à faire ?

Déjà tu as implémenté la classe et ses méthodes qu'on te propose ?

Quelles sont les tâches exactes pour le choix des sous-clés et la bijection qui combine les sous-clés et le message ?

Moi j'ai juste choisi les bits 0 à 31 de la clé pour la première itération, puis 1 à 32 pour la seconde itération... jusqu'à 16 à 47 (à un indice près).
Puis j'ai coupé cette sous-clé en 2, et fait un décalage sur chaque moitié de 1 ou 2 bits selon la parité de l'itération, et enfin regroupé ces 2 moitiés de sous-clé.

Du coup les derniers bits de la clé n'ont pas été utilisés. Et ma sous-clé ne fera que 32 bits, mais à quoi servirait-il d'en avoir + sachant qu'on la combinera avec un bloc de 32 bits lui aussi ?

Quant à la bijection, j'ai simplement permuté le kilo-octect, puis j'ai fait première moitié du kilo-octet xor sous-clé, puis l'autre moitié du kilo-octet xor la sous-clé suivante, 8 fois. Et finalement j'ai "dépermuté" le résultat (je permute pas à chaque itération).

A quoi sert cette permutation ?

Et je ne me suis pas encore penché sur le chiffrement de fichiers. Faudrait que j'apprenne quelques fonctions sur la lecture de fichiers.

(moi non plus je m'y connais pas trop en programmation, mais j'ai l'air d'avoir fait l'essentiel, même si ça n'est probablement pas très optimisé. J'adorais programmer ce genre d'algo plus jeune ).

Posté par
NoPseudoDispo
re : l?algorithme 3DES en C++ 16-06-21 à 17:27

Bon, si tu peux me répondre ça serait cool.

J'ai fignolé mon programme, mais mon algorithme de chiffrement (bien qu'opérationnel) n'est toujours pas un TDES.

J'ai trouvé l'algorithme détaillé ici :

Je ne comprends pas comment déchiffré l'étape de substitution, qui à 6 bits en associe 4... et qui ne peut donc admettre une réciproque sur l'ensemble des valeurs codées sur 6 bits.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !