Problème dans mon sujet en language C

Fermé
atmane82 Messages postés 8 Date d'inscription dimanche 30 octobre 2005 Statut Membre Dernière intervention 1 mai 2007 - 9 avril 2006 à 21:58
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 10 avril 2006 à 00:25
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();
}

1 réponse

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 812
10 avril 2006 à 00:25
Je veux bien t'aider mais malheureusement je n'ai aucune notion en cryptographie.

De plus j'ai vu quel était le sujet de l'exercice mais pas le point sur lequel tu bloquais. Peux-tu préciser ton problème ?

Bonne chance
0