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

x86 32-bits / 64-bits Assembleur Discussion :

Transformer un vecteur de caractères en matrice 4*4


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 53
    Points : 22
    Points
    22
    Par défaut Transformer un vecteur de caractères en matrice 4*4
    Bonjour,

    Je viens tout juste de commencer l'assembleur et pour mon premier projet, je dois déchiffrer un texte codé en un vecteur de caractère (de taille proport. à 16).

    L'énoncé un peu simplifié : Le système est assez simple, puisqu’il consiste à traiter le texte par blocs de 128 bits, repré-
    sentables sous la forme d’une matrice 4 × 4 bytes. Il y a donc principalement 3 entrées dans votre
    programme : le texte, sous forme de vecteur de caractères, la clé et la longueur du texte en terme
    de caractères. Chacun de ces bytes représente un caractère au format ASCII. Chaque bloc de texte
    est traité itérativement 10 fois et de manière identique. Le traitement pour chaque itération sera
    décrit dans la section suivante. Comme tout systèmes de chiffrement, vous avez besoin d’une clé.
    Cette clé a également une taille de 128 bits et peut également être représentée sous la forme d’une
    matrice de 4 × 4 bytes. Cette dernière reste la même pour chaque bloc à traiter.


    Pour ce projet, nous vous proposons d’implanter le système de déchiffrement. Pour cela, tout
    texte a une taille multiple de 16 en nombre de caractères. Comme dit plus haut, les caractères
    sont du type ASCII. Tout caractère est donc vu comme un byte. Comme chaque bloc peut être
    vu comme une matrice de 4 × 4 bytes, il peut être plus simple de considérer chaque ligne de la
    matrice sous la forme d’une information de 32 bits, soit 4 caractères.
    L’algorithme de déchiffrement : Pour déchiffrer le texte, il faut parcourir le vecteur de
    caractères et le traiter par bloc de 16. Chacun des blocs de 16 caractères est traité comme une
    matrice de 4 × 4 cases, où chaque case représente un byte. Chaque ligne fait donc 32 bits. La clé
    a une taille de 128 bits et elle est aussi vue comme une matrice de 4 × 4 bytes. Pour rappel, il
    n’existe pas de réels différences entre un entier et un caractère dans ce projet-ci (si ce n’est la taille
    en bits). Pour chaque bloc, nous appliquons le traitement itératif suivant 10 fois :
    – On va d’abord appliquer pour chaque ligne de la matrice du bloc à déchiffrer l’opération de
    ou-exclusif (XOR) avec la ligne de clé correspondante (voir figure 1).
    – Ensuite, nous allons appliquer une rotation paticulière à chaque ligne de la matrice à déchif-
    frer (voir figure 2). Ces rotations sont les suivantes :
    – une rotation de 8 bits vers la droite de la première ligne de 32 bits
    – une rotation de 8 bits vers la gauche de la seconde ligne de 32 bits
    – une rotation de 16 bits vers la gauche de la troisième ligne
    – une rotation de 24 bits vers la gauche pour la quatrième ligne
    – Une fois les opérations de XOR et de rotations effectuées, nous recommençons les étapes du
    traitement décrit ci-dessus 9 fois (donc 10 fois en tout).



    J'ai du mal à commencer, je n'arrive pas à transformer mon vecteur de caractères en une matrice 4*4....Le reste je devrais y arriver mais je coince au tout début !

    Comment transformer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cipher  DB  92, 113, 39, 117, 16, 25, 242, 174, 95, 210, 30, 158, 80, 1, 231, 179, 17, 35, 25, 48, 17, 15, 229, 174, 11, 158, 27, 219, 90, 6, 160, 181, 73, 119, 6, 48, 84, 15, 244, 235, 26, 205, 95, 219, 80, 30, 238, 168, 29, 112, 2, 38, 7, 92, 231, 224, 28, 209, 18, 220, 27, 83, 225, 178, 73, 98, 40, 60, 27, 234, 12, 158, 19, 153, 65, 83, 225, 180, 29, 111, 15, 48, 19, 9, 231, 174, 26, 204, 13, 219, 21, 83, 160, 230
    en la première "matrice" de cette image:



    ?


    Merci !

  2. #2
    Membre actif

    Inscrit en
    Février 2009
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 200
    Points : 235
    Points
    235
    Par défaut
    Si tu considères que 128 bits ne sont que 16 bytes (octets), que la mémoire est un espace linéaire...
    La complexité apparente vient, comme à l'habitude, d'énoncés rendus abscons par l'entrechoquement d'ordres de grandeurs différents formulés dans des formats incompatibles.
    Une matrice 4*4, présentée de manière voilée comme une série de 16 bytes (octets), est agencés de manière linéaire dans la RAM mais considérés comme un "objet" possédant une surface (pour une ligne c'est plus complexe).

    Si donc, tu reformules les choses raisonnablement décodées:
    Mes blocs de datas sont constitués par 16 bytes consécutifs, soit 128 bits, je les considère sous forme de tableaux 4*4 bytes pour les traiter…
    Les aigreurs d'estomac devraient passer petit à petit...

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/05/2012, 14h35
  2. Transformer chaîne de caractères en matrice
    Par Sofianosss dans le forum MATLAB
    Réponses: 1
    Dernier message: 21/02/2011, 16h44
  3. Transformer un vecteur en matrice
    Par larchicha dans le forum Caml
    Réponses: 3
    Dernier message: 17/11/2010, 21h22
  4. Transformer un vecteur en matrice
    Par chouki dans le forum MATLAB
    Réponses: 2
    Dernier message: 31/03/2010, 01h46
  5. Réponses: 7
    Dernier message: 26/06/2009, 10h54

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