begin process at 2012 05 27 15:15:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPT-O-MATIC "DARKCHOCOLATE"

CRYPT-O-MATIC "DARKCHOCOLATE"


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Classé sous :Crytage chiffrement, texte crypté, technique chiffrement Niveau :Initié Date de création :21/10/2009 Vu / téléchargé :2 178 / 67

Auteur : FrancoisGauthier

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

 Description

Chiffrement de fichiers textes lettre par lettre. Plusieurs algorithmes sont utilisés. La sécurité produite est inadaptée à un usage autre que personnel.

Source

  • /*=============================================================*\
  • || Crypt-o-matic v1.2 "DarkChocolate", GAUTHIER Francois, 2009 ||
  • ||=============================================================||
  • || ||
  • || Automated Data Encryption Tool ||
  • || (Do not provide real security, use it for fun) ||
  • \*=============================================================*/
  • #include <stdio.h>
  • #include <time.h>
  • #include <stdlib.h>
  • //==================================================================// "Be positive!" fonction
  • void bePlus(long *g)
  • {
  • *g=*g*-1;
  • }
  • //==================================================================// Encoding fonction
  • void fct(char *p, unsigned long *k, unsigned long *l)
  • {
  • long sort=0;
  • unsigned long gap=0;
  • //----------------------------------------------------// Selection tool
  • sort = lrand48()%1000000+random()%10000; // "Randomly" select the encoding method
  • if (sort<0)
  • {
  • bePlus(&sort); // Sort is always positive
  • }
  • //----------------------------------------------------// The methods
  • if (sort%2==0 || sort%37==0 || sort%937==0 ||
  • sort%379==0 || sort%383==0 || sort%389==0 ||
  • sort%397==0 || sort%401==0 || sort%409==0 ||
  • sort%449==0 || sort%457==0)
  • {
  • gap=lrand48()-*k-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%3==0 || sort%41==0 || sort%941==0 ||
  • sort%751==0 || sort%757==0 || sort%419==0 ||
  • sort%421==0 || sort%431==0 || sort%433==0 ||
  • sort%439==0 || sort%443==0)
  • {
  • gap=random()-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%5==0 || sort%43==0 || sort%947==0 ||
  • sort%461==0 || sort%463==0 || sort%467==0 ||
  • sort%479==0 || sort%487==0 || sort%491==0 ||
  • sort%499==0 || sort%503==0 || sort%509==0)
  • {
  • gap=lrand48()-rand()+*k-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%7==0 || sort%47==0 || sort%953==0 ||
  • sort%263==0 || sort%269==0 || sort%271==0 ||
  • sort%277==0 || sort%281==0 || sort%283==0)
  • {
  • gap=random()-rand()-*k;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%11==0 || sort%53==0 || sort%967==0 ||
  • sort%563==0 || sort%569==0 || sort%571==0 ||
  • sort%577==0 || sort%587==0 || sort%593==0 ||
  • sort%599==0 || sort%601)
  • {
  • gap=lrand48()-random()-*k+*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%13==0 || sort%59==0 || sort%971==0 ||
  • sort%907==0 || sort%911==0 || sort%919==0 ||
  • sort%929==0)
  • {
  • gap=lrand48()-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%17==0 || sort%61==0 || sort%977==0 ||
  • sort%701==0 || sort%709==0 || sort%719==0 ||
  • sort%727==0 || sort%733==0 || sort%739==0 ||
  • sort%743==0)
  • {
  • gap=lrand48()-*k-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%19==0 || sort%67==0 || sort%983==0 ||
  • sort%823==0 || sort%827==0 || sort%829==0 ||
  • sort%839==0 || sort%853==0 || sort%857==0)
  • {
  • gap=rand()+*k;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%23==0 || sort%71==0 || sort%991==0 ||
  • sort%809==0 || sort%811==0 || sort%821==0)
  • {
  • gap=random()+*k+*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%29==0 || sort%73==0 || sort%997==0 ||
  • sort%773==0 || sort%787==0 || sort%797==0)
  • {
  • gap=rand()-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%31==0 || sort%79==0 || sort%1009==0 ||
  • sort%761==0 || sort%769==0)
  • {
  • gap=rand()+*l-*k;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%83==0 || sort%89==0 || sort%97==0 ||
  • sort%331==0 || sort%337==0 || sort%347==0 ||
  • sort%349==0 || sort%353==0 || sort%359==0 ||
  • sort%367==0 || sort%373==0)
  • {
  • gap=random()-rand()+*k;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if(sort%101==0 || sort%103==0 || sort%107==0 ||
  • sort%229==0 || sort%233==0 || sort%239==0 ||
  • sort%241==0 || sort%251==0 || sort%257==0 ||
  • sort%293==0 || sort%307==0 || sort%311==0 ||
  • sort%313==0 || sort%317==0)
  • {
  • gap=lrand48()-random()+*k-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%109==0 || sort%113==0 || sort%127==0 ||
  • sort%659==0 || sort%661==0 || sort%673==0 ||
  • sort%677==0 || sort%683==0 || sort%691==0)
  • {
  • gap=(*k)-*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%131==0 || sort%137==0 || sort%139==0 ||
  • sort%859==0 || sort%863==0 || sort%877==0 ||
  • sort%881==0 || sort%883==0 || sort%887==0)
  • {
  • gap=*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%149==0 || sort%151==0 || sort%157==0 ||
  • sort%461==0 || sort%463==0 || sort%467==0 ||
  • sort%479==0 || sort%487==0 || sort%491==0 ||
  • sort%499==0 || sort%503==0)
  • {
  • gap=*l+*k;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%163==0 || sort%167==0 || sort%173==0 ||
  • sort%643==0 || sort%647==0 || sort%653==0)
  • {
  • gap=*k*(*l);
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%179==0 || sort%181==0 || sort%191==0 ||
  • sort%607==0 || sort%613==0 || sort%617==0)
  • {
  • gap=*k+2;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%193==0 || sort%197==0 || sort%199==0 ||
  • sort%509==0 || sort%521==0 || sort%523==0 ||
  • sort%541==0 || sort%547==0 || sort%557==0)
  • {
  • gap=rand()+*k+*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • if (sort%211==0 || sort%223==0 || sort%227==0 ||
  • sort%619==0 || sort%631==0 || sort%641==0)
  • {
  • gap=random()+*k+*l;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *p=*p+gap;
  • }
  • }
  • //=============================================================// Decoding fonction
  • void dfct(int *q, unsigned long *e, unsigned long *o)
  • {
  • long sort=0;
  • unsigned long gap=0;
  • //----------------------------------------------------// Selection tool
  • sort = lrand48()%1000000+random()%10000; // "Randomly" select the decoding method (Laughts are not allowed.)
  • if (sort<0)
  • {
  • bePlus(&sort); // Sort is always positive
  • }
  • //----------------------------------------------------// The methods
  • if (sort%2==0 || sort%37==0 || sort%937==0 ||
  • sort%379==0 || sort%383==0 || sort%389==0 ||
  • sort%397==0 || sort%401==0 || sort%409==0 ||
  • sort%449==0 || sort%457==0)
  • {
  • gap=lrand48()-*e-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%3==0 || sort%41==0 || sort%941==0 ||
  • sort%751==0 || sort%757==0 || sort%419==0 ||
  • sort%421==0 || sort%431==0 || sort%433==0 ||
  • sort%439==0 || sort%443==0)
  • {
  • gap=random()-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%5==0 || sort%43==0 || sort%947==0 ||
  • sort%461==0 || sort%463==0 || sort%467==0 ||
  • sort%479==0 || sort%487==0 || sort%491==0 ||
  • sort%499==0 || sort%503==0 || sort%509==0)
  • {
  • gap=lrand48()-rand()+*e-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%7==0 || sort%47==0 || sort%953==0 ||
  • sort%263==0 || sort%269==0 || sort%271==0 ||
  • sort%277==0 || sort%281==0 || sort%283==0)
  • {
  • gap=random()-rand()-*e;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%11==0 || sort%53==0 || sort%967==0 ||
  • sort%563==0 || sort%569==0 || sort%571==0 ||
  • sort%577==0 || sort%587==0 || sort%593==0 ||
  • sort%599==0 || sort%601)
  • {
  • gap=lrand48()-random()-*e+*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%13==0 || sort%59==0 || sort%971==0 ||
  • sort%907==0 || sort%911==0 || sort%919==0 ||
  • sort%929==0)
  • {
  • gap=lrand48()-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%17==0 || sort%61==0 || sort%977==0 ||
  • sort%701==0 || sort%709==0 || sort%719==0 ||
  • sort%727==0 || sort%733==0 || sort%739==0 ||
  • sort%743==0)
  • {
  • gap=lrand48()-*e-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%19==0 || sort%67==0 || sort%983==0 ||
  • sort%823==0 || sort%827==0 || sort%829==0 ||
  • sort%839==0 || sort%853==0 || sort%857==0)
  • {
  • gap=rand()+*e;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%23==0 || sort%71==0 || sort%991==0 ||
  • sort%809==0 || sort%811==0 || sort%821==0)
  • {
  • gap=random()+*e+*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%29==0 || sort%73==0 || sort%997==0 ||
  • sort%773==0 || sort%787==0 || sort%797==0)
  • {
  • gap=rand()-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%31==0 || sort%79==0 || sort%1009==0 ||
  • sort%761==0 || sort%769==0)
  • {
  • gap=rand()+*o-*e;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%83==0 || sort%89==0 || sort%97==0 ||
  • sort%331==0 || sort%337==0 || sort%347==0 ||
  • sort%349==0 || sort%353==0 || sort%359==0 ||
  • sort%367==0 || sort%373==0)
  • {
  • gap=random()-rand()+*e;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if(sort%101==0 || sort%103==0 || sort%107==0 ||
  • sort%229==0 || sort%233==0 || sort%239==0 ||
  • sort%241==0 || sort%251==0 || sort%257==0 ||
  • sort%293==0 || sort%307==0 || sort%311==0 ||
  • sort%313==0 || sort%317==0)
  • {
  • gap=lrand48()-random()+*e-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%109==0 || sort%113==0 || sort%127==0 ||
  • sort%659==0 || sort%661==0 || sort%673==0 ||
  • sort%677==0 || sort%683==0 || sort%691==0)
  • {
  • gap=(*e)-*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%131==0 || sort%137==0 || sort%139==0 ||
  • sort%859==0 || sort%863==0 || sort%877==0 ||
  • sort%881==0 || sort%883==0 || sort%887==0)
  • {
  • gap=*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%149==0 || sort%151==0 || sort%157==0 ||
  • sort%461==0 || sort%463==0 || sort%467==0 ||
  • sort%479==0 || sort%487==0 || sort%491==0 ||
  • sort%499==0 || sort%503==0)
  • {
  • gap=*o+*e;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%163==0 || sort%167==0 || sort%173==0 ||
  • sort%643==0 || sort%647==0 || sort%653==0)
  • {
  • gap=*e*(*o);
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%179==0 || sort%181==0 || sort%191==0 ||
  • sort%607==0 || sort%613==0 || sort%617==0)
  • {
  • gap=*e+2;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%193==0 || sort%197==0 || sort%199==0 ||
  • sort%509==0 || sort%521==0 || sort%523==0 ||
  • sort%541==0 || sort%547==0 || sort%557==0)
  • {
  • gap=rand()+*e+*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • if (sort%211==0 || sort%223==0 || sort%227==0 ||
  • sort%619==0 || sort%631==0 || sort%641==0)
  • {
  • gap=random()+*e+*o;
  • if(gap<0)
  • {
  • bePlus(&gap);
  • }
  • *q=*q-gap;
  • }
  • }
  • //=============================================================// MAIN FONCTION
  • int main (int argc, const char * argv[])
  • {
  • char c; // Encoded variable
  • int x=0; // Peanut variable
  • int f=0, cont=1; // Option variable -- Continue variable
  • int d=0; // Decoded variable
  • char n_source[100]; // Source file name
  • char n_dest[100]; // Destination file name
  • unsigned long accessCode=0; // Access code variable
  • unsigned long loop=0; // Scores loops
  • while(cont!=0)
  • {
  • puts("\n== Welcome to Crypt-o-Matic (v1.2 DarkChocolate)! Do you want to encode a file (1) or decode a file(2)?\n== Pls type 1 or 2 and press ENTER");
  • scanf("%d", &f);
  • srandom(2);
  • srand48(2); // Random fonctions resets
  • srand(3);
  • loop=0;
  • //---------------------------------------------------------------------// Encoding or Decoding options
  • if(f==1)
  • {
  • puts("== Access code generated: ** USER'S RESPONSABILITY TO USE ANY APPROPRIATE MEANS TO REMEMBER IT AND KEEP IT SECRET **");
  • printf("== ------- access code ----->> %ld", accessCode=time(0));
  • puts("\n== File to encode? (eventually including directory):");
  • }
  • if(f==2)
  • {
  • puts("======== WARNING: INCORRECT ENTRY MAY RESULT IN PERMANENT DATA LOSS!! =========");
  • puts("== Enter your access code:");
  • puts("== (Pls verify).");
  • scanf("%ld", &accessCode);
  • puts("== Access granted.");
  • puts("\n== File to decode? (eventually including directory):");
  • }
  • scanf("%100s", &n_source);
  • FILE* stream=fopen(n_source, "r");
  • //--------------------------------------------// Pointer return NULL on n_source
  • if(stream==NULL)
  • {
  • exit(puts("\n== FILE NOT FOUND\n== ***\tPlease verify file's name.***"));
  • }
  • //-------------------------------------------//
  • puts("\n== Destination file?");
  • scanf("%100s", &n_dest);
  • FILE* stream2=fopen(n_dest, "w");
  • puts("== Proceeding... Please wait...");
  • //--------------------------------------------------------------------// Encoding and Decoding calls and files writing
  • if(f==1)
  • {
  • char x1='P';
  • x1+=1;
  • printf("== 'P'= %c", x1);
  • fprintf(stream2, "%c", x1);
  • while (c=fgetc(stream), c!=EOF)
  • {
  • loop++;
  • fct(&c, &accessCode, &loop);
  • fprintf(stream2, "%c", c);
  • }
  • }
  • if(f==2)
  • {
  • char x1=fgetc(stream);
  • x1-=1;
  • printf("== %c", x1);
  • if(x1=='P')
  • {
  • while (d=fgetc(stream), d!=EOF)
  • {
  • loop++;
  • dfct(&d, &accessCode, &loop);
  • fprintf(stream2, "%c", d);
  • }
  • }
  • else
  • {
  • puts("Decoding status.... FAILED");
  • return EXIT_FAILURE;
  • }
  • puts("== Decoding status.... ok!");
  • remove(n_source);
  • if(remove(n_source))
  • {
  • puts("== Deleting source file..... ok!");
  • }
  • else
  • {
  • puts("== Unable to delete source file!\n== Deleting target file.");
  • remove(n_dest);
  • if(remove(n_dest))
  • {
  • puts("== Target file deleted.");
  • }
  • else
  • {
  • puts("== Unable to delete target file!\n");
  • }
  • }
  • }
  • fclose(stream);
  • fclose(stream2);
  • puts("== Exit status......ok!");
  • puts("\n\n== Press 1 and ENTER to use again.\n== Press 0 and ENTER to exit");
  • scanf("%d", &cont);
  • if (cont==0)
  • {
  • break;
  • }
  • }
  • return 0;
  • }
  • //=============================================//
  • //============ END OF SOURCE CODE =============//
  • //=============================================//
/*=============================================================*\
|| Crypt-o-matic v1.2 "DarkChocolate", GAUTHIER Francois, 2009 ||
||=============================================================||
||                                                             ||
||                Automated Data Encryption Tool               || 
||         (Do not provide real security, use it for fun)      ||
\*=============================================================*/


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

//==================================================================// "Be positive!" fonction

void bePlus(long *g)
{
	 *g=*g*-1;
}

//==================================================================// Encoding fonction

void fct(char *p, unsigned long  *k, unsigned long *l) 
{
	long sort=0;
	unsigned long gap=0;
	
//----------------------------------------------------//	Selection tool
	
	sort = lrand48()%1000000+random()%10000;   // "Randomly" select the encoding method
	
	if (sort<0)
	{
		bePlus(&sort);                           // Sort is always positive
	}
	
//----------------------------------------------------//	The methods
	

 
	if (sort%2==0 || sort%37==0 || sort%937==0 ||
		sort%379==0 || sort%383==0 || sort%389==0 ||
		sort%397==0 || sort%401==0 || sort%409==0 ||	
		sort%449==0 || sort%457==0)
	{
		gap=lrand48()-*k-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%3==0 || sort%41==0 || sort%941==0 ||
		sort%751==0 || sort%757==0 || sort%419==0 || 
		sort%421==0 || sort%431==0 || sort%433==0 || 
		sort%439==0 || sort%443==0)
	{ 
		gap=random()-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%5==0 || sort%43==0 || sort%947==0 ||
		sort%461==0 || sort%463==0 || sort%467==0 ||
		sort%479==0 || sort%487==0 || sort%491==0 ||
		sort%499==0 || sort%503==0 || sort%509==0)
	{
		gap=lrand48()-rand()+*k-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%7==0 || sort%47==0 || sort%953==0 ||
		sort%263==0 || sort%269==0 || sort%271==0 ||
		sort%277==0 || sort%281==0 || sort%283==0)
	{ 
		gap=random()-rand()-*k;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%11==0 || sort%53==0 || sort%967==0 ||
		sort%563==0 || sort%569==0 || sort%571==0 ||
		sort%577==0 || sort%587==0 || sort%593==0 ||
		sort%599==0 || sort%601)	
	{ 
		gap=lrand48()-random()-*k+*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%13==0 || sort%59==0 || sort%971==0 ||
		sort%907==0 || sort%911==0 || sort%919==0 ||
		sort%929==0)	
	{ 
		gap=lrand48()-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%17==0 || sort%61==0 || sort%977==0 ||
		sort%701==0 || sort%709==0 || sort%719==0 ||
		sort%727==0 || sort%733==0 || sort%739==0 ||
		sort%743==0)	
	{ 
		gap=lrand48()-*k-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%19==0 || sort%67==0 || sort%983==0 ||
		sort%823==0 || sort%827==0 || sort%829==0 ||	
		sort%839==0 || sort%853==0 || sort%857==0)	
	{ 
		gap=rand()+*k;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%23==0 || sort%71==0 || sort%991==0 ||
		sort%809==0 || sort%811==0 || sort%821==0)
	{
		gap=random()+*k+*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%29==0 || sort%73==0 || sort%997==0 ||
		sort%773==0 || sort%787==0 || sort%797==0)
	{ 
		gap=rand()-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
	
	if (sort%31==0 || sort%79==0 || sort%1009==0 ||
		sort%761==0 || sort%769==0)
	{ 
		gap=rand()+*l-*k;
		if(gap<0)
		{
			bePlus(&gap);
		}
		
		*p=*p+gap;
	}
	
	if (sort%83==0 || sort%89==0 ||  sort%97==0 ||
		sort%331==0 || sort%337==0 || sort%347==0 ||
		sort%349==0 || sort%353==0 || sort%359==0 ||
		sort%367==0 || sort%373==0)
	{ 
		gap=random()-rand()+*k;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if(sort%101==0 || sort%103==0 || sort%107==0 ||
	   sort%229==0 || sort%233==0 || sort%239==0 ||	
	   sort%241==0 || sort%251==0 || sort%257==0 ||
	   sort%293==0 || sort%307==0 || sort%311==0 ||
	   sort%313==0 || sort%317==0)
	{
		gap=lrand48()-random()+*k-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%109==0 || sort%113==0 || sort%127==0 ||
		sort%659==0 || sort%661==0 || sort%673==0 ||
		sort%677==0 || sort%683==0 || sort%691==0)
	{ 
		gap=(*k)-*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%131==0 || sort%137==0 || sort%139==0 ||
		sort%859==0 || sort%863==0 || sort%877==0 ||
		sort%881==0 || sort%883==0 || sort%887==0)
	{ 
		gap=*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%149==0 || sort%151==0 || sort%157==0 ||
		sort%461==0 || sort%463==0 || sort%467==0 ||
		sort%479==0 || sort%487==0 || sort%491==0 ||
		sort%499==0 || sort%503==0)
	{ 
		gap=*l+*k;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%163==0 || sort%167==0 || sort%173==0 ||
		sort%643==0 || sort%647==0 || sort%653==0)
	{ 
		gap=*k*(*l);
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%179==0 || sort%181==0 || sort%191==0 ||
		sort%607==0 || sort%613==0 || sort%617==0)
	{ 
		gap=*k+2;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%193==0	|| sort%197==0 || sort%199==0 ||
		sort%509==0 || sort%521==0 || sort%523==0 ||
		sort%541==0 || sort%547==0 || sort%557==0)
	{ 
		gap=rand()+*k+*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
		
	if (sort%211==0 || sort%223==0 || sort%227==0 ||
		sort%619==0 || sort%631==0 || sort%641==0)
	{ 
		gap=random()+*k+*l;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*p=*p+gap;
	}
}					
	
//=============================================================// Decoding fonction	

void dfct(int *q, unsigned long  *e, unsigned long *o)
{
	long sort=0;
	unsigned long gap=0;
	
	//----------------------------------------------------//	Selection tool
	
	sort = lrand48()%1000000+random()%10000;   // "Randomly" select the decoding method (Laughts are not allowed.)
	
	if (sort<0)
	{
		bePlus(&sort);                         // Sort is always positive
	}
	
	//----------------------------------------------------//	The methods
	
	if (sort%2==0 || sort%37==0 || sort%937==0 ||
		sort%379==0 || sort%383==0 || sort%389==0 ||
		sort%397==0 || sort%401==0 || sort%409==0 ||	
		sort%449==0 || sort%457==0)
	{
		gap=lrand48()-*e-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%3==0 || sort%41==0 || sort%941==0 ||
		sort%751==0 || sort%757==0 || sort%419==0 || 
		sort%421==0 || sort%431==0 || sort%433==0 || 
		sort%439==0 || sort%443==0)
	{ 
		gap=random()-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%5==0 || sort%43==0 || sort%947==0 ||
		sort%461==0 || sort%463==0 || sort%467==0 ||
		sort%479==0 || sort%487==0 || sort%491==0 ||
		sort%499==0 || sort%503==0 || sort%509==0)
	{
		gap=lrand48()-rand()+*e-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%7==0 || sort%47==0 || sort%953==0 ||
		sort%263==0 || sort%269==0 || sort%271==0 ||
		sort%277==0 || sort%281==0 || sort%283==0)
	{ 
		gap=random()-rand()-*e;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%11==0 || sort%53==0 || sort%967==0 ||
		sort%563==0 || sort%569==0 || sort%571==0 ||
		sort%577==0 || sort%587==0 || sort%593==0 ||
		sort%599==0 || sort%601)	
	{ 
		gap=lrand48()-random()-*e+*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%13==0 || sort%59==0 || sort%971==0 ||
		sort%907==0 || sort%911==0 || sort%919==0 ||
		sort%929==0)	
	{ 
		gap=lrand48()-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%17==0 || sort%61==0 || sort%977==0 ||
		sort%701==0 || sort%709==0 || sort%719==0 ||
		sort%727==0 || sort%733==0 || sort%739==0 ||
		sort%743==0)	
	{ 
		gap=lrand48()-*e-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%19==0 || sort%67==0 || sort%983==0 ||
		sort%823==0 || sort%827==0 || sort%829==0 ||	
		sort%839==0 || sort%853==0 || sort%857==0)	
	{ 
		gap=rand()+*e;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%23==0 || sort%71==0 || sort%991==0 ||
		sort%809==0 || sort%811==0 || sort%821==0)
	{
		gap=random()+*e+*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%29==0 || sort%73==0 || sort%997==0 ||
		sort%773==0 || sort%787==0 || sort%797==0)
	{ 
		gap=rand()-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%31==0 || sort%79==0 || sort%1009==0 ||
		sort%761==0 || sort%769==0)
	{ 
		gap=rand()+*o-*e;
		if(gap<0)
		{
			bePlus(&gap);
		}
		
		*q=*q-gap;
	}
	
	if (sort%83==0 || sort%89==0 ||  sort%97==0 ||
		sort%331==0 || sort%337==0 || sort%347==0 ||
		sort%349==0 || sort%353==0 || sort%359==0 ||
		sort%367==0 || sort%373==0)
	{ 
		gap=random()-rand()+*e;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if(sort%101==0 || sort%103==0 || sort%107==0 ||
	   sort%229==0 || sort%233==0 || sort%239==0 ||	
	   sort%241==0 || sort%251==0 || sort%257==0 ||
	   sort%293==0 || sort%307==0 || sort%311==0 ||
	   sort%313==0 || sort%317==0)
	{
		gap=lrand48()-random()+*e-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%109==0 || sort%113==0 || sort%127==0 ||
		sort%659==0 || sort%661==0 || sort%673==0 ||
		sort%677==0 || sort%683==0 || sort%691==0)
	{ 
		gap=(*e)-*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%131==0 || sort%137==0 || sort%139==0 ||
		sort%859==0 || sort%863==0 || sort%877==0 ||
		sort%881==0 || sort%883==0 || sort%887==0)
	{ 
		gap=*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%149==0 || sort%151==0 || sort%157==0 ||
		sort%461==0 || sort%463==0 || sort%467==0 ||
		sort%479==0 || sort%487==0 || sort%491==0 ||
		sort%499==0 || sort%503==0)
	{ 
		gap=*o+*e;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%163==0 || sort%167==0 || sort%173==0 ||
		sort%643==0 || sort%647==0 || sort%653==0)
	{ 
		gap=*e*(*o);
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%179==0 || sort%181==0 || sort%191==0 ||
		sort%607==0 || sort%613==0 || sort%617==0)
	{ 
		gap=*e+2;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%193==0	|| sort%197==0 || sort%199==0 ||
		sort%509==0 || sort%521==0 || sort%523==0 ||
		sort%541==0 || sort%547==0 || sort%557==0)
	{ 
		gap=rand()+*e+*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
	
	if (sort%211==0 || sort%223==0 || sort%227==0 ||
		sort%619==0 || sort%631==0 || sort%641==0)
	{ 
		gap=random()+*e+*o;
		if(gap<0)
		{
			bePlus(&gap);
		}
		*q=*q-gap;
	}
}					

//=============================================================// MAIN FONCTION

int main (int argc, const char * argv[]) 
{
	char c;                         // Encoded variable
	int x=0;                        // Peanut variable 
	int  f=0, cont=1;               // Option variable -- Continue variable 
	int d=0;                        // Decoded variable
	char n_source[100];             // Source file name                                    
	char n_dest[100];               // Destination file name
	unsigned long accessCode=0;     // Access code variable 
	unsigned long loop=0;           // Scores loops

	
	while(cont!=0)
	{
		puts("\n== Welcome to Crypt-o-Matic (v1.2 DarkChocolate)! Do you want to encode a file (1) or decode a file(2)?\n== Pls type 1 or 2 and press ENTER");
		scanf("%d", &f);
		
		srandom(2);
		srand48(2);            // Random fonctions resets
		srand(3);
		loop=0;
		
		//---------------------------------------------------------------------// Encoding or Decoding options	
		
		if(f==1)
		{
			puts("== Access code generated: ** USER'S RESPONSABILITY TO USE ANY APPROPRIATE MEANS TO REMEMBER IT AND KEEP IT SECRET **");
			printf("== ------- access code ----->> %ld", accessCode=time(0));
			puts("\n== File to encode? (eventually including directory):");
		}
		
		if(f==2)
		{
			puts("======== WARNING: INCORRECT ENTRY MAY RESULT IN PERMANENT DATA LOSS!! =========");
			puts("== Enter your access code:");
			puts("== (Pls verify).");
			scanf("%ld", &accessCode);
			puts("== Access granted.");
			puts("\n== File to decode? (eventually including directory):");
		}
		
		scanf("%100s", &n_source);
		FILE* stream=fopen(n_source, "r");
		
		//--------------------------------------------//	Pointer return NULL  on n_source
		
		if(stream==NULL)
		{
			exit(puts("\n== FILE NOT FOUND\n== ***\tPlease verify file's name.***"));
		}
		
		//-------------------------------------------//	
		
		
		puts("\n== Destination file?");
		scanf("%100s", &n_dest);
		FILE* stream2=fopen(n_dest, "w");
		puts("== Proceeding... Please wait...");
		//--------------------------------------------------------------------// Encoding and Decoding calls and files writing
		if(f==1)
		{  
			char x1='P';
			x1+=1;
			printf("== 'P'= %c", x1);
			fprintf(stream2, "%c", x1);
			
			while (c=fgetc(stream), c!=EOF)
			{   
				loop++;
				fct(&c, &accessCode, &loop);
				fprintf(stream2, "%c", c);	
			}
			
		}
		
		if(f==2)
		{
			char x1=fgetc(stream);
			x1-=1;
			printf("== %c", x1);
			if(x1=='P')
			{	
				while (d=fgetc(stream), d!=EOF)
				{
					loop++;
					dfct(&d, &accessCode, &loop);
					fprintf(stream2, "%c", d);
				}
			}
			else
			{
				puts("Decoding status.... FAILED");
				return EXIT_FAILURE;
			}
			
			puts("== Decoding status.... ok!");
			
			remove(n_source);
			
			if(remove(n_source))
			{
				puts("== Deleting source file..... ok!");
			}
			else
			{
				puts("== Unable to delete source file!\n== Deleting target file.");
				remove(n_dest);
				if(remove(n_dest))
				{
					puts("== Target file deleted.");
				}
				else
				{
					puts("== Unable to delete target file!\n");
				}
				
			}
			
		
		}
		fclose(stream);
		fclose(stream2);
		puts("== Exit status......ok!");
		puts("\n\n== Press 1 and ENTER to use again.\n== Press 0 and ENTER to exit");
		scanf("%d", &cont);
		if (cont==0)
		{
			break;
		}
	}
	return 0;
}
//=============================================//
//============ END OF SOURCE CODE =============//
//=============================================//

 Conclusion

J'en ai fait plusieurs versions, celle ci est la plus "aléatoirement chiffrée". Elle se nomme DarkChocolate.

 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 GENERIC INPUTBOX FOR WINDOWS (WIN32 AND C)
Source avec Zip WINDOWCAPTURE
Source avec Zip Source avec une capture HIGHWAY SIMULATOR
Source avec Zip TICTACTOE EN C
BITOPERATOR

 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 Bacterius le 22/10/2009 09:20:20

1) Attention, ta méthode de sélection "d'algorithme" n'est peut-être pas tout à fait aléatoire. En effet, en prenant la valeur absolue du résultat, tu donnes (peut-être) des chances supplémentaires à certains nombres. Par exemple, si on définit un générateur pseudo-aléatoire entre -2 et 4 tel que tu l'utilises, alors on peut tirer les nombres 0 (1/6 probabilité), 1 (1/3 probabilité), 2 (1/3 probabilité), 3(1/6), et 4(1/6). Si tu veux utiliser la valeur absolue, il faut que le générateur ait des limites de même distance de zéro (exemple -2 et 2, 8 et -8 ...) (c'est pour ça que je dis "peut-être", car je ne sais pas si en C++ et tel que tu l'appelles dans ton code, c'est le cas).

2) Je ne suis pas sûr qu'un tel algorithme soit utile en pratique (même pour un usage perso), pour une raison principale : une méthode de chiffrement doit être déterministe. Dans ton cas, il faut clairement distinguer la génération de la clef "aléatoire" de la routine de chiffrement, et plutôt de proposer à l'utilisateur de proposer une clef qu'il a choisie lui-même (une même clef donne un même chiffrement pour une même donnée). Dans ton cas, je ne suis pas trop sûr de comprendre (je ne pratique pas le C++), mais il semblerait que tu tires des clefs aléatoires pour l'encodage ET pour le décodage. En gros, en appellant à la suite tes deux fonctions, on pourrait encrypter avec la clef "12" et décrypter avec la clef "3384" ... à moins que la clef "générée" ne modifie pas l'algorithme (mais quel intérêt alors), je ne comprends pas trop ces pratiques ...

Cordialement, Bacterius !

Commentaire de FrancoisGauthier le 22/10/2009 16:07:17

J'aurai aimé que le site permette de classer différemment C et C++. Mon code est en C.

The lrand48() and nrand48() functions return values of type long in the range [0, 2**31-1]. The high-order (31) bits of r(n+1) are loaded into the lower bits of the returned value, with the topmost (sign) bit set to zero.

-----> dixit sous Unix cmd: man lrand48.

Il n'y a en fait *normalement* pas de problème de valeur négative avec lrand48. Si cependant cela se produit, se serai très mal pour la suite du programme. La fonction bePlus ne mange pas beaucoup de pain, et on sait jamais. Il est bon de ssavoir que les fonctions "pseudo ramdomisés" se répètes si elle sont réinitialisée a l'identique, ce qui est -un avantage si on a besoin de répété la même séquence (décrypter) -un inconvénient car cela les rends prévisibles.

Je vais schématiser le déroulement du programme: la clé fournie l'est sur une simple interprétation de time(), parceque le calendrier ne boucle pas trop souvent. Un même fichier, codé a 1 seconde d'intervale, donne un cryptage different. Il faut noter la clé pour pouvoir décrypter le fichier. Si on utilise une mauvaise clé dans lors du décryptage, le fichier est crypté est recrypté sur la nouvelle clé (et là bon courage...).
Le programme est prévu pour des fichiers textes. Chaque "signe" du fichier est crypté (pas seulement les lettres) sur l'éventail des fonctions de codage. Elles utilisent toutes des fonctions standards "pseudo randomisés", qui, pour être moins prévisibles, sont utilisées avec d'autres variables, comme la clé de cryptage, la valeur du caractère considéré, sa place relative dans le fichier.

Je l'ai testé sous Mac OSx (sans problème, cela devrai fonctionner aussi sous Linux) et sous windows Vista (il faut faire une légère adaptation du code pour que le programme lise le fichier jusqu'à la fin).

Toutes questions, remarques, critiques sont les bienvenues!

Commentaire de CHAR As Human le 19/01/2010 00:44:51 10/10

Moi je mets 10, c'est original de créer 'sa' méthode de chiffrement !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,343 sec (4)

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