Soyez le premier à donner votre avis sur cette source.
Snippet vu 59 722 fois - Téléchargée 34 fois
// code de cesar #include <stdio.h> #include <stdlib.h> // flush void flush() { while( getchar() != '\n' ) continue; } // programme principal int main() { int decalage = 0; char nom_fichier[256]; char choix = 'c'; // choix printf( "Code de Cesar\n" ); printf( "\nSaisir le décalage : " ); scanf( "%d", &decalage ); flush(); printf( "\nSaisir le nom du fichier : " ); scanf( "%s", nom_fichier ); flush(); printf( "\nChiffrement [c] ou déchiffrement [d] : " ); scanf( "%c", &choix ); // synthèse switch( choix ) { case 'c' : printf("\nVous avez demandé le chiffrement du fichier %s avec un décalage de %d.\n", nom_fichier, decalage ); { int index; int taille_fichier = 0; FILE * fichier_avant = NULL; FILE * fichier_apres = NULL; int taille_memoire_tamon = 1024; char * memoire_tampon = NULL; // allocation memoire_tampon = (char*)malloc(taille_memoire_tamon); // mise en mémoire tampon fichier_avant = fopen( nom_fichier, "r" ); taille_fichier = fread( memoire_tampon, 1, taille_memoire_tamon, fichier_avant ); fclose( fichier_avant ); // chiffrement dans le mémoire tampon for( index = 0; index != taille_fichier; ++index ) { // chiffrement des majuscules if( memoire_tampon[ index ] >=65 && memoire_tampon[ index ] < 91 ) memoire_tampon[ index ] = ( ( memoire_tampon[ index ] - 65 ) + decalage ) % 26 + 65; // chiffrement des minuscules if( memoire_tampon[ index ] >=97 && memoire_tampon[ index ] < 123 ) memoire_tampon[ index ] = ( ( memoire_tampon[ index ] - 97 ) + decalage ) % 26 + 97; } // mise a jour du fichier fichier_apres = fopen( nom_fichier, "w" ); fwrite( memoire_tampon, 1, taille_fichier, fichier_apres ); fclose( fichier_apres ); // desallocation free( memoire_tampon); } return 0; case 'd' : printf("\nVous avez demandé le déchiffrement du fichier %s avec un décalage de %d.\n", nom_fichier, decalage ); { int index; int taille_fichier = 0; FILE * fichier_avant = NULL; FILE * fichier_apres = NULL; int taille_memoire_tamon = 1024; char * memoire_tampon = NULL; // allocation memoire_tampon = (char*)malloc(taille_memoire_tamon); // mise en mémoire tampon fichier_avant = fopen( nom_fichier, "r" ); taille_fichier = fread( memoire_tampon, 1, taille_memoire_tamon, fichier_avant ); fclose( fichier_avant ); // déchiffrement dans le mémoire tampon for( index = 0; index != taille_fichier; ++index ) { // déchiffrement des majuscules if( memoire_tampon[ index ] >=65 && memoire_tampon[ index ] < 91 ) memoire_tampon[ index ] = ( ( memoire_tampon[ index ] - 65 ) - decalage ) % 26 + 65; // déchiffrement des minuscules if( memoire_tampon[ index ] >=97 && memoire_tampon[ index ] < 123 ) memoire_tampon[ index ] = ( ( memoire_tampon[ index ] - 97 ) - decalage ) % 26 + 97; } // mise a jour du fichier fichier_apres = fopen( nom_fichier, "w" ); fwrite( memoire_tampon, 1, taille_fichier, fichier_apres ); fclose( fichier_apres ); // desallocation free( memoire_tampon); } return 0; default: return -1; } }
5 juin 2005 à 17:09
c'est sympa un petit code sur le cryptage de césar. Suffit qu'on en ait pas assez... Qui se dévoue pour compter le nombre de sources parlant de cryptage affine ??
Le pire, c'est qu'en plus casser ce cryptage est élémentaire...
Cordialement.
6 juin 2005 à 00:12
merci
6 juin 2005 à 00:20
* Le code de César : http://www.bibmath.net/crypto/substi/cesar.php3
* La fonction malloc : http://www.opengroup.org/onlinepubs/009695399/functions/malloc.html
La fonction flush vide le buffer d'entrée standard de manière à enchainer les saisies au clavier correctement.
6 juin 2005 à 01:15
6 juin 2005 à 17:38
Pour info : un César se casse environ en disons 10 minutes, maximum...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.