Invention d'un nouveau type de cryptage... (si il est nul, me le dire)

Soyez le premier à donner votre avis sur cette source.

Vue 4 692 fois - Téléchargée 199 fois

Description

Le titre est peut etre un peu ventard car je ne sais pas si ça existe déjà...
C'est un peu codé à la barbare, je le reconnais, j'aurais pu faire quelques efforts et mettre plus de commentaires, mais je suis sûr que vous ne m'en voudrez pas :)
En fait, le cryptage ne nécessite pas de mot de passe, le fichier est crypté d'après lui même. Je pense que sans le code source, on ne peut pas décrypter mes fichiers, vous me direz ce que vous en pensez car c'est vrai que je ne suis pas un pro en programmation^^
De plus, le fichier crypter est beaucoup plus gros (12 fois je crois) que le fichier d'origine, et ça ne fonctionne que pour des petits fichiers (inférieurs à quelques mégas).
Il faut tout d'abord écrire un fichier "test.txt" que vous remplirez comme vous voudrez, dans le même repertoire que le programme source. Ensuite, le code génère un fichier crypté : "txtcod.txt" et un fichier redécrypté : "decode.txt".
Il a été testé sous borland c++ 5.02 et marche parfaitement chez moi.
Bien sûr, j'attends vos critique (je pense qu'il y en aura beaucoup) et vos remarques, ainsi que vos conseils et/ou vos encouragements^^
Il ne vous reste plus qu'à tester...

Source / Exemple :


J'ai mis un zip cette fois ci, avec l'executable pour ceux qui n'arriveraient pas à le compiler...
Le code est le suivant :

#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

struct caractere
{
unsigned int iteration[100000];
unsigned int place[100000];
unsigned int nombre;
};

caractere lettre[256];

void init(void)
{
for (int i=0;i<256;i++) {lettre[i].nombre=0;
								for (unsigned int j=0;j<100000;j++) {lettre[i].iteration[j]=0;
                        									lettre[i].place[j]=0;
                                                   }
                        }
}

void Lecture_Fichier(const char *car)
{
FILE *stream;
stream=fopen(car,"rb");

unsigned int i=1;
while (!feof(stream))
	{
   unsigned int c;
   unsigned int test;
   if ((c=fgetc(stream))==EOF) break;
   else {
        test=lettre[c].nombre;
        //cout<<test<<endl;
        //system("pause");
        lettre[c].place[test]=i;
        if (lettre[c].place[test]!=0)
        			{
               lettre[c].nombre++;
               lettre[c].iteration[test]=lettre[c].nombre;
               }

        else {lettre[c].nombre++;}
        i++;
        }

   }
   fclose(stream);
}

void Afficher_Fichier(void)
{
for (int i=0;i<256;i++) {
								for (unsigned int j=0;j<100000;j++) {
                        if (lettre[i].place[j]!=0)
                        	{
                        cout<<"caractere = "<<i<<"  ,  ";
                        cout<<"iteration "<<lettre[i].iteration[j]<<"  ";
                        cout<<"place "<<lettre[i].place[j];
                        cout<<endl;
                        	}							}
                        }
}

void Ecrire_Fichier(const char *cara)
{
FILE *out;
out=fopen(cara,"wb");
for (int i=0;i<256;i++) {
								for (unsigned int j=0;j<100000;j++) {
                        if (lettre[i].place[j]!=0)
                              {
                        fwrite(&i,4,1,out);
                        //cout<<"i vaut : "<<i<<"et sa taille : "<<sizeof(i)<<endl;
                        //fprintf(out," ");
                        fwrite(&(lettre[i].iteration[j]),4,1,out);
                        //cout<<"iteration vaut : "<<lettre[i].iteration[j]<<"et sa taille : "<<sizeof(lettre[i].iteration[j])<<endl;
                        //fprintf(out," ");
                        fwrite(&(lettre[i].place[j]),4,1,out);
                        //cout<<"place vaut : "<<lettre[i].place[j]<<"et sa taille : "<<sizeof(lettre[i].place[j])<<endl;
                        //fprintf(out,"\n");
                        //system("pause");
                        		}
                        								}
                        }
fclose(out);
}

void Decode_Fichier(const char *cara1, const char *cara2)
{
FILE *in,*out;
in=fopen(cara1,"rb");
out=fopen(cara2,"wb");

unsigned int c;
unsigned int temp2[3];
unsigned int *temp=temp2;
unsigned int value=0,it_max=0;
while (!feof(in))
		{
      fread(temp,4,3,in);
      //for (int i=0;i<3;i++) {cout<<"temp["<<(i)<<"] vaut : "<<*(temp+i)<<endl;
      if (*(temp+2)>value) value=*(temp+2);  //}
      if (*(temp+1)>it_max) it_max=*(temp+1);
      //system("pause");
      }
cout<<"Iteration Max : "<<it_max<<" fois"<<endl;

rewind(in);

while (!feof(in))
		{
      fread(temp,4,3,in);
      fseek(out,(*(temp+2)-1),0);
      fputc(*temp,out);
      //system("pause");
      }

//for(int j=0;j<3;j++) {fputc(temp[j],out);
fclose(in);
fclose(out);
}

int main(void)
{
init();

Lecture_Fichier("test.txt");
//Afficher_Fichier();
Ecrire_Fichier("txtcode.txt");
Decode_Fichier("txtcode.txt","decode.txt");

cout<<"Votre fichier est correctement crypte...\n";
system("pause");
return 0;
}

Conclusion :


Si des âmes sympas pouvaient me donner quelques conseils, ça serait cool de leurs part. Merci d'avance et bonne prog.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
dimanche 2 novembre 2003
Statut
Membre
Dernière intervention
19 novembre 2005

le plus gros defaut de ton code , c'est qu'en possedant le source on peut decrypter le fichier donc aucune securité !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
compression LZW :
http://membres.lycos.fr/frdupoux/compress/index.htm

J'ai également une source en gestation.
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Faut bien recommencer un jour ;) Merci quand même pour le site ça va m'être très utile...
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

arf, oui c'est exact, sorry
ça faisait un bail toi ;-)
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Pour les formats :
www.wotsit.org et pas .com (heureusement que je suis là Kirua :D)
Afficher les 17 commentaires

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.