begin process at 2012 05 27 20:05:02
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > INVENTION D'UN NOUVEAU TYPE DE CRYPTAGE... (SI IL EST NUL, ME LE DIRE)

INVENTION D'UN NOUVEAU TYPE DE CRYPTAGE... (SI IL EST NUL, ME LE DIRE)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :06/12/2003 Vu / téléchargé :3 790 / 132

Auteur : jb60

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

 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

  • 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;
  • }
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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • crypt.CPPTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 671 octets
  • crypt.exeTélécharger ce fichier [Réservé aux membres club]74 240 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip PGCD, PPCM, ET FACTORISATION DE PLUSIEURS NOMBRES
Source avec Zip Source avec une capture CRÉATION IMAGE BITMAP ALÉATOIRE OU COMME VOUS VOULEZ :)
CONVERTIR UN NOMBRE DECIMAL EN N'IMPORTE QUELLE BASE (JUSQU'...
DEBUT DU JEU DU SERPENT
Source avec une capture BOUGER LE CURSEUR EN MODE TEXTE, PLUS DE PROBLEME GRACE A DJ...

 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 alkove le 06/12/2003 11:08:27

c'est comme une compression mais à l'inversse ^^

j'ai éssayé la premiere fois avec un petit fichier ou j'avais mis : 123456abcd mais le texte codé était pratiquement en clair, et le décodage me sortait 456abc.

j'ai éssayé avec un fichier plus gros, et ca marchait nickel :)
seulement je pense qu'il y a trop de redondance dans le fichier codé, et que ca peut aider à deviner la structure du fichier codé.

Commentaire de djl le 06/12/2003 12:29:16

c pas mal mais faut que t'explique ton algo

sinon pour ameliorer, un petit menu et choisir le nom des fichier ;)

Commentaire de jb60 le 06/12/2003 13:57:46

merci les gars,
comme tu le dis alkove, ce n'est pas un compresseur de fichier, mais un augmenteur de fichiers...
Pour moi, il marche même pour les petits fichiers. Je ne sais pas comment tu as fait pour retrouver pratiquement le même fichier codé que l'initial, car moi quand je l'ouvre, je vois plen de caractères indescriptibles, comme des carrés, etc, alors qu'il n'y en a pas dans le fichier source. Mais bon, je les ouvre simplement avec le bloc note , il ne lit donc pas tous les caractères correctement !!!

Pour djl, merci encore, des qu'on met une source, tiu y met un commentaire, c'est cool de ta part, j'apprécie. Je sais que j'aurais pu mettre un menu, etc, mais en fait je ne voulais pas me prendre trop la tête avec tout ça, j'ai déjà eu beaucoup de mal avec le code pour crypter et décrypter le fichier avant de trouver la solution. En fait, mon algorithme de cryptage est très simple, il lit le fichier source, et compte l'occurence des caractères, ensuite le fichier crypté remet simplement la lettre lue, puis le numéro de l'occurence et sa place dans le fichier initial. Le fichier codé place simplement toutes les lettres 'a' (par exemple) du fichier original en début du fichier codé, avec toutes leurs occurences et leurs numéro de place, il fait de même avec toutes les lettres dans le fichier (même si ce ne sont pas des lettres, mais des chiffres par exemple), ceci en codant chaque caractère sur 4 octets. Je pense que vous m'aurez compris, mais je sais que mon source manque largement de commentaires (il n'y en a pas je crois)^^

Allez, bonne continuation les gars, et bonne prog....

Commentaire de djl le 06/12/2003 18:14:24

a ok, bien expliquer, maintenant tu vois pourquoi je t'ai dit de t'orienter vers le codage, car ce que tu fais c'est pas du cryptage mais du codage!
bien sur au niveau de ton entourage proche ca peut etre une securite, mais pour le reste, et donc internet, ca tien pas la route
deja il faudrai une cle sinon sa ve dir que l'on considere ton programme comme une cles (une personne tiers qui a ton programme a juste a le faire tourner et a analyser ce qu'il fait)
le mieux c meme d'avoir 2 cles
en fait en restant sur le codage et en partant de l'algo de ton code du devrai esayer de faire un prog qui code et compact un fichier comme le font les algos huffman et lzw (lzw est plus proche de ce que tu fait)
en de basant sur la frequence des caracteres je suis sur qu'il ya pas mal de truc a faire!

Commentaire de alkove le 06/12/2003 18:45:47

il y a des moyen de "crypter" sans trop augmenter la taille du fichier dans le genre :
- découper le fichier en bloc (de 4 caractère par exemple)
- sur chaque bloc prendre un caractère l'un apres l'autre

ce qui donne a peu pres ca
"hello world"
- "hell" "o wo" "rld0" "0000"
- hoe lwlor0l0d000
(on comble les vides avec 0 par exemple)

et pour corsser les choses a la fin tu fais la meme chose en coupant le fichier en deux.

bien sur ce genre de cryptage sans cle, la sécurité ne repose que sur le fait que l'on ne connait pas l'algo.

voila, j'espère t'avoir donné des idées :)

Commentaire de kall333 le 07/12/2003 10:39:05

Un algo avec ce serais super.
En tout cas c est bien de tester de nouvelles idees

Commentaire de Kirua le 07/12/2003 12:22:39

j'ai pas lu les comments plus haut, mais sache juste qu'un cryptage sans clef de cryptage est un encodage. ah, et puis aussi, ... le coup du fichier 12 fois plus gros c'est pas mal :-D loooool :-P

Commentaire de jb60 le 07/12/2003 17:15:22

OK les gars,

En fait, je voulais vous dire premièrement que je ne savais pas que ce que je faisais était de l'encodage et non du cryptage (je me coucherais moins bête ce soir).

Merci alkove pour tes idées qui me seront peut être utiles un jour...

DJL, si tu connais le principe des algotihmes d'huffman et lzw, ça m'intéresserais beaucoup de les connaitres, ou tout au moins le principe si tu n'as pas de source sur ces algo. J'ai déjà essayé de chercher un petit peu, mais je n'ai rien trouvé de bien concluant sur le sujet. Alors si tu pouvais m'envoyer un message sur ce sujet, ça serait super cool de ta part.
En tout cas, vous m'avez démontré que mon cryptage ne sert à rien, voir à très peu de chose sur internet. Tout le monde pourrait lire mes fichiers sans problème...


Autre chose aussi, n'ayant rien à voir avec mon source, je cherche le principe pour lire les fichiers wav, j'aimerais créer mes propres fichiers wav et pouvoir ensuite les lire avec un lecteur du type media player, sans qu'il me dise : fichier ne portant pas la bonne extension, impossible à lire, ou tout autre message d'erreur. Je pense que les fichiers wav doivent avoir une entête avec le nom de l'artiste, etc... que je n'arrive pas à recréer. Je ne sais pas ou cette entete commence (peut etre au début du fichier), mais surtout où elle finit. Ensuite, les données sont elles codées sur 8 ou 16 bits lors de l'échantillonnage, et à quelle fréquence d'échantillonnage?
Je verrais plus tard pour les fichiers mp3, qui ne sont que des compression par algorithme d'huffman, etc... des fichiers wav.

Voilà, j'ai fini.

@+ et encore merci pour tous ces commentaires.

Commentaire de djl le 07/12/2003 17:35:20

ouai ya du huffman dans nos cher mp3!
en fait ya 2 type de compression dans mp3, ya la compression sonore et destructive(sur les frequences, l'effet de masque,...) et la compression binaire et non destructive qui vient a la fin(huffman)

pour l'algo d'huffman, il faut que tu ais au moins la notion d'arbre et d'arbre binaire en algo, ca consiste en gros a compacter la taille binaire d'un caractere en fonction de sa frequence, la table des frequences suffit comme entete.
pour lzw je sait juste que c'est baser sur les dico(une table des mots avec leur position dans le fichier)

pour l'entete des fichier wav
http://col2000.free.fr/vocal/formawav.htm

Commentaire de Kirua le 07/12/2003 18:05:34

pour les formats en général:
www.wotsit.com

Commentaire de kimmelf2 le 08/12/2003 02:25:50

tiens, ca m'interresse ca le format wav ...

au passage, vous ne connaissez pas une technique pour chopper ce qui entre sur une carte son ?? car faire du traitement audio sur un wav, c'est bien, le faire en live, c'est mieux ;-)

Commentaire de Kirua le 08/12/2003 08:01:55

FMOD le fait non ?

Commentaire de dominion le 09/12/2003 12:29:07

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

Commentaire de Kirua le 09/12/2003 12:54:02

arf, oui c'est exact, sorry
ça faisait un bail toi ;-)

Commentaire de dominion le 09/12/2003 12:58:57

Faut bien recommencer un jour ;) Merci quand même pour le site ça va m'être très utile...

Commentaire de ymca2003 le 11/12/2003 16:25:57

compression LZW :
http://membres.lycos.fr/frdupoux/compress/index.htm

J'ai également une source en gestation.

Commentaire de jargha le 18/10/2005 11:20:34

le plus gros defaut de ton code , c'est qu'en possedant le source on peut decrypter le fichier donc aucune securité !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 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,515 sec (3)

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