Problème dans mon sujet en language C
salut;
je suis un étudiant en électronique.
on m'a chargé par un projet en language C de la cryptographie.
je suis un membre de "commentcamarche" .
je vous en prie, je suis bloqué dans une partie dans le projet, il s'agit du stockage dans les fichiers veuillez m'aider:
voici l'énoncé de projet:
Algorithme cryptographique d'empilements il s'agit d'implanter en langage C l'algorithme d'empilements(cours de cryptographie):1.ecrire une fonction empil_croissant() qui fabrique une suite d'empilements super_croissant2.ecrire une fonction empil_normal() qui fabrique à partir d'une suite super_croissante une suite d'empilements normale3.ecrire une fonction chiffrement()qui chiffre un texte en utilisant la suite d'empilements normale,le texte chiffré sera stocké dans un fichier.4.ecrire une fonction dechiffrement() qui déchiffre un texte chiffré en utilisant la suite d'empilementssuper croissante,le texte déchiffré sera stocké dans un fichier.5.ecrire un programme qui regroupe les 4 fonctions.
j'ai commencé par:
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#define nb 5
#define Max 30
long* empil_croissant(int size){
int i;
long *croissant,s=0;
randomize();
croissant=(long*)malloc(size*sizeof(long));
*croissant=abs(rand()%nb)+1;
for(i=1;i<size;i++){
s=s+*(croissant+i-1);
*(croissant+i)=s+abs(rand()%nb)+1;}
return croissant;}
void affichage(long* tab,int size){
int i;
for(i=0;i<size;i++)
printf(" %ld",*(tab+i));}
int tirage(long* T,int size){
randomize();
return *(T+abs(rand()%size));
}
long* saisie(int t){
int i;
long *T;
T=(long*)malloc(t*sizeof(long));
printf("\n Entrez les ‚l‚ments de votre tableau: ");
for(i=0;i<t;i++)
scanf("%ld",T+i);
return T;
}
long modulo(long* T,int size){
int i;
long m=0;
for(i=0;i<size;i++)
m=m+*(T+i);
return m=m+abs(rand()%nb+1); }
long* empil_normal(long *croissant,int size,long n,long m){
long *normal;
int i,j;
normal=(long*)malloc(size*sizeof(long));
for(j=0;j<size;j++)
*(normal+j)=(*(croissant+j)*n)%m;
return normal;
}
long pgcd(long a,long b){
long r;
while(b>0){
r=a%b;
a=b;
b=r;}
return a;
}
long inverse_mod(long n,long m){
int d=m,i=1;
while((d+1)%n!=0){
i++;
d=m*i;}
return (d+1)/n;
}
int lecture(char car[Max]){
int i=-1;
printf("\n Entrez le message … chiffrer: ");
do{
i++;
scanf("%c",&car[i]);
}
while(car[i]!=10);
return i;
}
/*int ecrire(long n,int chiffre[Max]){
int i;
for(i=0;n>0;i++){
chiffre[i]=n%2;
n=n/2;}
return i;
} */
void main(){
FILE *fi;
char texte[Max];
int tas,t,f;
long *ssc,*sn,*T,m,n;
printf("\n Entrez la taille de votre tas: ");
scanf("%d",&tas);
ssc=empil_croissant(tas);
affichage(ssc,tas);
printf("\n Entrez la taille de votre tableau: ");
scanf("%d",&t);
T=saisie(t);
m=modulo(ssc,tas);
printf("\n m= %ld\n",m);
do{
n=tirage(T,t);}
while(pgcd(n,m)!=1);
printf("\n n= %ld\n",n);
sn=empil_normal(ssc,tas,n,m);
affichage(sn,tas);
printf("\n pgcd(%ld,%ld)=%ld",n,m,pgcd(n,m));
printf("\n L'inverse de %ld modulo %ld est %ld",n,m,inverse_mod(n,m));
gets(texte);
f=lecture(texte);
printf("la longueur de votre message est: %d",f);
if(fi=fopen(texte,"r")!=NULL)
puts(texte);
else puts("\n erreur");
fclose(fi);
getch();
}
je suis un étudiant en électronique.
on m'a chargé par un projet en language C de la cryptographie.
je suis un membre de "commentcamarche" .
je vous en prie, je suis bloqué dans une partie dans le projet, il s'agit du stockage dans les fichiers veuillez m'aider:
voici l'énoncé de projet:
Algorithme cryptographique d'empilements il s'agit d'implanter en langage C l'algorithme d'empilements(cours de cryptographie):1.ecrire une fonction empil_croissant() qui fabrique une suite d'empilements super_croissant2.ecrire une fonction empil_normal() qui fabrique à partir d'une suite super_croissante une suite d'empilements normale3.ecrire une fonction chiffrement()qui chiffre un texte en utilisant la suite d'empilements normale,le texte chiffré sera stocké dans un fichier.4.ecrire une fonction dechiffrement() qui déchiffre un texte chiffré en utilisant la suite d'empilementssuper croissante,le texte déchiffré sera stocké dans un fichier.5.ecrire un programme qui regroupe les 4 fonctions.
j'ai commencé par:
#include<stdio.h>
#include<conio.h>
#include<time.h>
#include<stdlib.h>
#define nb 5
#define Max 30
long* empil_croissant(int size){
int i;
long *croissant,s=0;
randomize();
croissant=(long*)malloc(size*sizeof(long));
*croissant=abs(rand()%nb)+1;
for(i=1;i<size;i++){
s=s+*(croissant+i-1);
*(croissant+i)=s+abs(rand()%nb)+1;}
return croissant;}
void affichage(long* tab,int size){
int i;
for(i=0;i<size;i++)
printf(" %ld",*(tab+i));}
int tirage(long* T,int size){
randomize();
return *(T+abs(rand()%size));
}
long* saisie(int t){
int i;
long *T;
T=(long*)malloc(t*sizeof(long));
printf("\n Entrez les ‚l‚ments de votre tableau: ");
for(i=0;i<t;i++)
scanf("%ld",T+i);
return T;
}
long modulo(long* T,int size){
int i;
long m=0;
for(i=0;i<size;i++)
m=m+*(T+i);
return m=m+abs(rand()%nb+1); }
long* empil_normal(long *croissant,int size,long n,long m){
long *normal;
int i,j;
normal=(long*)malloc(size*sizeof(long));
for(j=0;j<size;j++)
*(normal+j)=(*(croissant+j)*n)%m;
return normal;
}
long pgcd(long a,long b){
long r;
while(b>0){
r=a%b;
a=b;
b=r;}
return a;
}
long inverse_mod(long n,long m){
int d=m,i=1;
while((d+1)%n!=0){
i++;
d=m*i;}
return (d+1)/n;
}
int lecture(char car[Max]){
int i=-1;
printf("\n Entrez le message … chiffrer: ");
do{
i++;
scanf("%c",&car[i]);
}
while(car[i]!=10);
return i;
}
/*int ecrire(long n,int chiffre[Max]){
int i;
for(i=0;n>0;i++){
chiffre[i]=n%2;
n=n/2;}
return i;
} */
void main(){
FILE *fi;
char texte[Max];
int tas,t,f;
long *ssc,*sn,*T,m,n;
printf("\n Entrez la taille de votre tas: ");
scanf("%d",&tas);
ssc=empil_croissant(tas);
affichage(ssc,tas);
printf("\n Entrez la taille de votre tableau: ");
scanf("%d",&t);
T=saisie(t);
m=modulo(ssc,tas);
printf("\n m= %ld\n",m);
do{
n=tirage(T,t);}
while(pgcd(n,m)!=1);
printf("\n n= %ld\n",n);
sn=empil_normal(ssc,tas,n,m);
affichage(sn,tas);
printf("\n pgcd(%ld,%ld)=%ld",n,m,pgcd(n,m));
printf("\n L'inverse de %ld modulo %ld est %ld",n,m,inverse_mod(n,m));
gets(texte);
f=lecture(texte);
printf("la longueur de votre message est: %d",f);
if(fi=fopen(texte,"r")!=NULL)
puts(texte);
else puts("\n erreur");
fclose(fi);
getch();
}
A voir également:
- Problème dans mon sujet en language C
- Sujet de tfc déjà travaille pdf ✓ - Forum Windows
- Sujet de tfc déjà travaille en informatique pdf ✓ - Forum Études / Formation High-Tech
- Sujet de tfc déjà travaillé pdf - Forum Java
- Sujet informatique pour exposé ✓ - Forum Études / Formation High-Tech
- Sujet de mon TFC - Forum Bases de données