Traduction d'un petit code en korne shell

Fermé
pfalinux Messages postés 2 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 18 mai 2007 - 17 mai 2007 à 23:15
pfalinux Messages postés 2 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 18 mai 2007 - 18 mai 2007 à 01:20
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
A voir également:

2 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
17 mai 2007 à 23:39
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
pfalinux Messages postés 2 Date d'inscription jeudi 17 mai 2007 Statut Membre Dernière intervention 18 mai 2007
18 mai 2007 à 01:20
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