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

MATLAB Discussion :

conversion C vers Matlab


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut conversion C vers Matlab
    Salut,
    je lutte encore contre cet algorithme de cryptage en C que j'essai de traduire en matlab (j'ai essayé avec le MEX mais j'ai pas bien compris le tutoriel)

    voila le code C:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void RC5_SETUP(unsigned char *K) /* secret input key K[0...b-1]      */
    {  WORD i, j, k, u=w/8, A, B, L[c]; 
       /* 1-Initialize L */
       for (i=b-1,L[c-1]=0; i!=-1; i--) L[i/u] = (L[i/u]<<8)+K[i];
       /* 2- initialise S */
       for (S[0]=P,i=1; i<t; i++) S[i] = S[i-1]+Q;
       /* Mix l into S */
       for (A=B=i=j=k=0; k<3*t; k++,i=(i+1)%t,j=(j+1)%c)   /* 3*t > 3*c */
         { A = S[i] = ROTL(S[i]+(A+B),3);  
           B = L[j] = ROTL(L[j]+(A+B),(A+B)); 
     
         }
    en Matlab j'ai essayé de faire ça:

    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
    function SETUP(K)
     
    %Constante Magique
    Pw= {'b7e15163'};
    Qw= {'9e3779b9'};
    w=32; %taille du bloc;
    r=12; %Nombre de rondes;
    t= 2*(r+1);
    b=16;
    L=[];
    Key=[];
     
    %copie de K dans L
    for i=1:i+4:length(Key)-3
    K=key(i:i+3);
    L=[K L]; 
    end
     
    %initialise S 
    S=[];  %sous clés;
    Q = uint32(hex2dec(Qw));
    P = uint32(hex2dec(Pw));
    S(1)= P;
    for i=2:t-1
      S(i) = (bitor(S(i-1),Q));
      a=dec2bin(S(i),16)
    end
    je reçoit un résultat bizar c'est que le tableau des sous clés S possède les mêmes valeurs!!! soit S(i)=3.220666875000000e+09
    soit a= 10111111111101110111100111111011
    je ne sais pas pourquoi
    Ce que je savais c'est que bitor et bistshift s'appliquent pour des entiers non signés.
    pouvez vous m'aidez à localiser mon erreur??

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 134
    Par défaut
    Si j'étais toi je compilerai ma fonction ci-dessus en fonction MEX, via la commande :

    Pour que ton fichier C puisse être compilée, la fonction "main" de ton fichier doit être remplacé par la fonction "mexFunction" qui prend comme arguments les éléments suivants ;
    - int nlhs, (nombre d'éléments en sortie)
    - mxArray *plhs[], (valeurs des éléments en sortie)
    - int nrhs, (nombre d'arguments que prends ta fonction MATLAB)
    - const mxArray *prhs[] (valeurs des arguments de ta fonction MATLAB)

    Regarde ce tuto que je trouve bien fait ; Writing C Functions in MATLAB (MEX-Files)


Discussions similaires

  1. Conversion petit code Python vers MATLAB
    Par recherche888 dans le forum MATLAB
    Réponses: 13
    Dernier message: 30/11/2011, 10h34
  2. Conversion de Scilab vers MATLAB
    Par mathbran dans le forum Scilab
    Réponses: 1
    Dernier message: 01/09/2010, 14h27
  3. conversion de code vers MATLAB
    Par respobds dans le forum MATLAB
    Réponses: 0
    Dernier message: 14/05/2009, 08h27
  4. Conversion Unix vers DOS...
    Par nicosfly dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2008, 17h53
  5. Conversion Timestamp vers varchar
    Par stejutt dans le forum SQL
    Réponses: 4
    Dernier message: 08/01/2004, 08h46

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