Traduction d'un petit code en korne shell

Bonjour,

j'ai un petit code de cryptage de chaine de caractéres par la méthode de vigénere et comme je ne suis que débutante en shell (juste qlq notions en c-shell), j'aurais bien aimer avoir une traduction en korne shell pour ce code ,et merci bien :

voilà le code en C:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define TS 93
#define MODE_CRYPT 1
#define MODE_DECRYPT 2

int
main( int ac, char *av[ ] )
{
char Message[ 100 ] ;
char Cle [ 100 ] ;
char Filtre [ 100 ] = "" ;
char MsgCode[ 100 ] = "" ;
char Tableau[ TS ] [ TS ] = {'a','b','c','d','e','f','g','h', 'i','j','k','l','m','n','o','p', 'q','r','s','t','u','v','w','x', 'y','z',' ','A','B','C','D','E', 'F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U', 'V','W','X','Y','Z','0','1','2', '3','4','5','6','7','8','9','0', ',',';',':','!','?','.','/','*', '$','(',')','[',']','{','}','_', '-','°','@','%','<','>','\'','é', 'è','"','à','+','='} ;
unsigned int i, j, k ;
unsigned int select ;

// On remplit le tableau
for( i = 1 ; i < TS ; i ++ )
for( j = 0 ; j < TS ; j ++ )
Tableau[ i ] [ j ] = Tableau[ 0 ] [ (i + j) % TS ] ;
while( 1 )
{
printf( "\n\nQue voulez-vous faire ? :\n"
"1...Crypter une chaine.\n"
"2...Decrypter une chaine.\n"
"0...Quitter.\n" ) ;

select = 3 ;

while( select > 2 )
{
printf( "\nVotre choix ? : " ) ;
scanf( "%d", &select ) ;
}

if( select )
{
printf( "Entrez un message : " ) ;

flushall( ) ;

if( select == MODE_CRYPT )
gets( Message ) ;
else
gets( MsgCode ) ;

printf( "Entrez la clef : " ) ;
gets( Cle ) ;

// Copie de la clée dans Filtre
while( strlen( Filtre ) <= strlen( Message ) )
strcat( Filtre, Cle ) ;

switch( select )
{
case MODE_CRYPT :
// Codage
for( i = 0 ; i < strlen( Message ) ; i ++ )
{
// Abscisse dans j
for( j = 0 ; j < TS ; j ++ )
{
if( Message[ i ] == Tableau[ 0 ] [ j ] ) break ;
}

// Ordonnée dans k
for( k = 0 ; k < TS ; k ++ )
{
if( Filtre[ i ] == Tableau[ k ] [ 0 ] ) break ;
}

// On stock le caractère codé
MsgCode[ i ] = Tableau[ k ] [ j ] ;
}

printf( "\nMessage code : %s\n\n", MsgCode ) ;

break ;

case MODE_DECRYPT :
// Décodage
for( i = 0 ; i < strlen( MsgCode ) ; i ++ )
{
// Ordonnée dans j
for( j = 0 ; j < TS ; j ++ )
if( Filtre[ i ] == Tableau[ j ] [ 0 ] ) break ;

// Abscisse dans k
for( k = 0 ; k < TS ; k ++ )
if( MsgCode[ i ] == Tableau[ j ] [ k ] ) break ;

// On stock le caractère décodé
Message[ i ] = Tableau[ 0 ] [ k ] ;
}

printf( "\nMessage decode : %s\n\n", Message ) ;

break ;
}
} /* if select */
else
break ;
} /* while( 1 ) */

return 0 ;
}

et bon courage à tous
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. Webmaster
    Bonsoir,

    Je ne dirais que 2 mots:
    man ksh

    A lire impérativement, tu pourras sans doute revenir après avec au moins un début de script que l'on pourra critiquer (pas au mauvais sens du terme!)

    Bon courage
    à toi, @+
    0
    1. merci asevere déja j'ai commencé à traduire et voilà ou j'en suis :

      @i=0;
      while( $i=1) // un boucle qui se repete pour avoir le choix de l'utilisateur 'on peut mettre while(1) tout cours
      {
      #echo "Que voulez vous faire"
      #echo "1- Crypter une chaîne."
      #echo "2- Decrypter une chaîne."
      #echo "0 -Quitter."

      @select=3
      while( $select >=2)
      #echo "Entrez votre choix."
      @select=

      }

      mais il y'as un petit truc c comment saisir ce qui rentre l'utilisateur et l'affecter à @select ??
      et comment définir un tableau à deux dimensions en ksh?
      et merci encore
      0