begin process at 2012 02 08 22:58:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > [VC++] CRYPTAGE SIMPLE VIGENÈRE (COMMENTÉ)

[VC++] CRYPTAGE SIMPLE VIGENÈRE (COMMENTÉ)


 Information sur la source

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :16/07/2001 Date de mise à jour :19/12/2001 17:27:57 Vu / téléchargé :6 114 / 317

Auteur : Gerald

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Ce projet pour Visual C++ 6.0 est très simple,mais je le met quand même, on sait jamais, si ça peut en interesser un autre ...
La technique est celle de Vigenère, donc elle est elle aussi très simple, mais le système d'extension est lui plus compliqué ;)   c'est pour simplifier la tâche...
Enfin c'est un peu le bordel...Si quelqu'un pense que j'ai fait n'importe quoi, je me ferait un plaisir d'écouter ses remarques :)

sylvainpasutto@yahoo.fr

Source

  • /*******************************************
  • * Schema du cryptage Vigenère: *
  • * *
  • * chaine initiale...... *
  • * + mot_de_passemot_de... *
  • * =---------------------- *
  • * texte crypté......... *
  • * Gerald*
  • *******************************************/
  • #include <stdio.h> // printf(), fprintf()...
  • #include <conio.h> // getch()
  • #include <string.h> // strcpy(), strcat()
  • #include <stdlib.h>
  • void main(int argc,char *argv[])
  • {
  • FILE *filename,*cryptedfile; // les pointeurs vers les fichiers
  • char password[30]; // le mot de passe
  • char filetemp[30]; // le nom du fichier
  • unsigned int n=0; // le caractère lu
  • unsigned int nb=0; // la position dans la chaîne du
  • // mot de passe
  • unsigned int len=0; // la longueur du mot de passe
  • unsigned int taille=0; // la longueur de l'argument(nom du
  • // fichier à crypter)
  • char tmp=0; // la variable nulle
  • if (argc != 2)
  • {
  • // Si l'utilisateur n'a pas mis les bons parametres,
  • // on lui indique la syntaxe
  • printf("\a\nusage : BSCryptDos infile\n");
  • // on attend la saisie de l'utilisateur
  • getch();
  • }
  • else
  • {
  • for(int gg=0;gg<argc;gg++)
  • {
  • // affichage de tout les paramètres
  • printf("%d:%s\n",gg,argv[gg]);
  • }
  • printf("password:"); // on demande à l'utilisateur
  • gets(password); // son mot de passe
  • len = strlen(password); // puis on calcul sa taille
  • taille = strlen(argv[1]);// ainsi que celle de l'argument
  • strcpy(filetemp,argv[1]);// puis on copie l'argument dans
  • // la chaîne prévue à cet effet
  • do
  • { // on recherche dans
  • taille--; // la chaîne "filetemp"
  • } // le caractere 'point'
  • while (filetemp[taille] != '.'); // puis on le remplace
  • filetemp[taille] = '\0'; // par le caractere fin de chaîne
  • // on ouvre le fichier à crypter: si fopen() renvoie 'NULL',
  • // c'est que ça a planté
  • if ((filename = fopen(argv[1],"rb+")) != NULL)
  • {
  • // on remplace l'estension par l'estension '.bsc'
  • strcat(filetemp,".bsc");
  • // on crée le fichier qui sera crypté
  • if ((cryptedfile = fopen(filetemp,"wb+")) != NULL)
  • {
  • for (int i=0;;i++)
  • {
  • nb++; // à chaque tour, on passe du
  • // premier caractere du mot de
  • // passe au second, et ainsi
  • // de suite;
  • if (nb>len) nb=0; // si nb est plus grand que len,
  • // c'est qu'on est à la fin du
  • // mot de passe, donc on revient
  • // au début
  • tmp += password[nb]; // on rajoute 1 au password pour
  • // éviter les caracteres 'null'
  • // (voir message de Croqmort)
  • n = fgetc(filename); // on lit un caractere dans le
  • // fichier non crypté
  • if (n == EOF) break; // on vérifie si on est pas à la
  • // du fichier non crypté
  • // enfin, on écrit sous forme de caractere la valeur
  • // ASCII du caractere lu ajoutée à la position
  • // correspondante dans le mot de passe
  • fprintf(cryptedfile,"%c",n + tmp);
  • }
  • }
  • // on informe l' utilisateur que c'est fini ;)
  • printf("\ncryptage termine");
  • }
  • }
  • }
/*******************************************
* Schema du cryptage Vigenère:             *
*                                          *
*        chaine initiale......             *
*      + mot_de_passemot_de...             *
*      =----------------------             *
*        texte crypté.........             *
*                                    Gerald*
*******************************************/
#include <stdio.h>    // printf(), fprintf()...
#include <conio.h>    // getch()
#include <string.h>   // strcpy(), strcat()
#include <stdlib.h>   


void main(int argc,char *argv[])
{

	FILE *filename,*cryptedfile; // les pointeurs vers les fichiers
	char password[30];           // le mot de passe
	char filetemp[30];           // le nom du fichier
	unsigned int n=0;            // le caractère lu
	unsigned int nb=0;           // la position dans la chaîne du
								 //  mot de passe
	unsigned int len=0;          // la longueur du mot de passe
	unsigned int taille=0;       // la longueur de l'argument(nom du
								 //  fichier à crypter)
	char tmp=0;                  // la variable nulle
	
	if (argc != 2)
	{
		// Si l'utilisateur n'a pas mis les bons parametres,
		// on lui indique la syntaxe
		printf("\a\nusage : BSCryptDos infile\n");
		// on attend la saisie de l'utilisateur
		getch();
	}


	else
	{
		for(int gg=0;gg<argc;gg++)
		{
			// affichage de tout les paramètres
			printf("%d:%s\n",gg,argv[gg]);
		}
		printf("password:");     // on demande à l'utilisateur
		gets(password);          // son mot de passe
		len = strlen(password);  // puis on calcul sa taille
		taille = strlen(argv[1]);// ainsi que celle de l'argument
		strcpy(filetemp,argv[1]);// puis on copie l'argument dans
								 // la chaîne prévue à cet effet
		do
		{                                 // on recherche dans
			taille--;                     // la chaîne "filetemp"
		}                                 // le caractere 'point'
		while (filetemp[taille] != '.');  // puis on le remplace
		filetemp[taille] = '\0';          // par le caractere fin de chaîne
		
		    // on ouvre le fichier à crypter: si fopen() renvoie 'NULL',
		    // c'est que ça a planté
			if ((filename = fopen(argv[1],"rb+")) != NULL)
			{
				// on remplace l'estension par l'estension '.bsc'
				strcat(filetemp,".bsc"); 
				
				// on crée le fichier qui sera crypté                   
				if ((cryptedfile = fopen(filetemp,"wb+")) != NULL)
				{
					for (int i=0;;i++)
					{
						nb++;                // à chaque tour, on passe du
											 // premier caractere du mot de
											 // passe au second, et ainsi
											 // de suite; 											 
						if (nb>len) nb=0;    // si nb est plus grand que len,
											 // c'est qu'on est à la fin du 
											 // mot de passe, donc on revient
											 // au début
						tmp += password[nb]; // on rajoute 1 au password pour
											 // éviter les caracteres 'null'
											 // (voir message de Croqmort)
						n = fgetc(filename); // on lit un caractere dans le 
											 // fichier non crypté
						if (n == EOF) break; // on vérifie si on est pas à la
											 // du fichier non crypté 
						// enfin, on écrit sous forme de caractere la valeur
						// ASCII du caractere lu ajoutée à la position 
						// correspondante dans le mot de passe
						fprintf(cryptedfile,"%c",n + tmp);
					}
				}
				// on informe l' utilisateur que c'est fini ;)
				printf("\ncryptage termine");
			}
	}

}

 Conclusion

Remarque: la source du décrypteur est séparée de celle du crypteur, pour plus de clarté.Elle se trouve dans le Zip.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture CODE MORSE AVEC WAVEOUT

 Sources de la même categorie

PROJET DE CRYPTOGRAPHIE: RSA À JEU REDUIT D'INSTRUCTION par samatarahmed
Source avec Zip Source avec une capture CRYPTOSYSTÈME ELGAMAL LIBRAIRIE GMP par louelh95
Source avec Zip Source .NET (Dotnet) NOUVEL ALGORITHME D'ENCRYPTION-DÉSENCRYPTION DYNAMIQUE (INFA... par vletktol
Source avec Zip A2DCRYPT - CRYPTAGE 2048 BITS par darkor
Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974

Commentaires et avis

Commentaire de Gerald le 19/12/2001 16:55:13

Effectivement je n'y avait pas pensé ;)
Enfin bon, il suffit juste de prendre des clés du genre "?.:/f%" et là y'a plus de problemes ;)
Je tiens à noter que cette source se sert simplement de la technique de Vigenère et qu'aucune améliorations n'y a été ajouté; mais je rajouterais quand même ces quelques lignes de codes. Merci!

Commentaire de vince2002 le 02/03/2002 11:32:16

Il ne faut jamais utiliser gets() à cause des trous de sécurité.
Il vaut mieux utiliser fgets() qui est + robuste.

Commentaire de Gerald le 14/03/2002 13:00:32

fgets n'est pas sensé récupérer la chaine dans un fichier?????
Parceque autrement ça devient un peu le bordel pour récupérer le mot de passe...
Sinon ben merci pour l'info ;-)

Commentaire de Merlin59 le 02/01/2003 21:44:04

je pense que l'une des manière de rendre plus sur un cryptage, quelque soit l'algo utilisé est le CBC avec vecteur d'init.
Je m'explique, on genère une chaîne aléatoire (ou presque) de 64bits, qu'on ajoute au début du fichier, puis on combine la sortie de 64bits cryptés précendent par XOR avec la nouvelle entrée de 64bits.
Les 64bits aléatoires étant le vecteur d'initialisation.
Le combinage de la sortie précédente avec l'entrée en cours étant le mode CBC.

Commentaire de LordBob le 07/01/2003 22:32:03

c clair, ta source est tres interressante et permettra surement a de nombreux debutant de commencé le cryptage...

Commentaire de Gerald le 01/02/2003 18:04:00

Merci c'est sympa
J'ai mis sur mon site un programme qui s'appel "cryptages", et qui utilise une version orientée objet de l'algo; de plus il gère les modes CBC et CFB, sans compter les autres algos: BlowFish et Rijndael(AES), tous au format classes.
http://sheeps.free.fr/ sylvainpasutto@yahoo.fr

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,044 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales