begin process at 2012 05 28 09:05:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

codage d'un fichier texte avec c++


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

codage d'un fichier texte avec c++

vendredi 29 janvier 2010 à 22:50:19 | codage d'un fichier texte avec c++

mame06

salut tout le monde voilà je dois crypter et décrypter un fichier texte en c++ et mon grand probleme c'est que je suis débutante en c++.

alors j'ai déjà une fonction qui permet d'ouvrir de lire et de fermer un fichier texte tout ce que j'ai pas compris c'est comment faire le cryptage et le décryptage .ou bien s'il y'a des fonctions en c++ qui renvoient le code ascii en binaire des carateres.

bon je mets le description du probleme en cas où quelqu'un pourrait m'aider.




- Éditer (avec un éditeur de textes) un texte quelconque de quelques lignes et enregistrer ce fichier sur le disque.
- Créer un programme qui lit ce fichier et affiche son contenu. Le programme affichera finalement le nombre de lignes composant le fichier.



II. Cryptage d'un fichier
On se propose de crypter de manière simple le fichier précédemment créé (afin d'en interdire la lecture avec un simple éditeur de textes).

1. Faire la fonction de cryptage
L'octet transmis sera divisé en deux quartets. Les bits des quartets seront ensuite mélangés comme indiqué ci-dessous. La fonction retournera le complément du résultat obtenu.
Exemple : Soit le caractère 'A' de code ASCII 0x41
On coupe ce code ASCII en deux quartets ; on obtient 4 et 1, soit en binaire : 0100 et 0001.
On mélange les quartets en alternant les bits dans cet ordre:
4 8 3 7 2 6 1 5
On obtient alors un octet contenant 0x48, soit, en binaire : 01001000
Ensuite on prend le complément de cette valeur et on obtient 10110111, soit en hexadécimal 0xB7.
Si le caractère 'A' est transmis à la fonction, celle-ci retournera donc la valeur B7H (soit 183 en décimal).


2. Écrire une fonction réalisant la lecture du fichier Fin, qui crypte ce fichier et écrit le résultat dans Fout.
- Le prototype de cette fonction sera :
int CryptFile(FILE *Fin, FILE *Fout);
Cette fonction retournera 1 si le cryptage s'est bien passé, et 0 en cas d'erreur.
Remarque : Le fichier Fout devra avoir été ouvert en binaire pour assurer une écriture correcte dans le fichier.


3. Faire le programme complet.
L'utilisateur devra entrer le nom du fichier à crypter et le nom du fichier crypté.
Proposer un système permettant de crypter ou décrypter de manière automatique le fichier transmis en argument.



merci d'avance.



dimanche 31 janvier 2010 à 16:45:38 | Re : codage d'un fichier texte avec c++

tpoinsot

Salut,

C'est un peu long, on dirait que tu donnes le sujet d'un devoir maison sans y avoir réfléchi.

Qu'as-tu fait et quelle est la question qui te bloques (c'est là qu'on intervient d'habitude)

thip
dimanche 31 janvier 2010 à 22:07:04 | Re : codage d'un fichier texte avec c++

mame06

C vrai tu as raison c'est un devoir maison mais j'y réflechissais au moment de le poster d'ailleurs je suis parvenu à trouver une méthode pour renvoyer le complémentaire et la fonction de cryptage c'est pas très original mais tout ce que j'ai trouvé jusque là elles marchent bien(je les ai testé).si vous avez des remarques merci de bien vouloir les poster:


la méthode qui renvoit le complémentaire:

int comp(unsigned char uce)
{
int com;
int codeascii = uce;
int a,b,i;
a=codeascii/2;
b=codeascii%2;
i=7;
TB[i]=b;
while (a!=0)
{ TB[i]=b;
codeascii=a;
a=codeascii/2;
b=codeascii%2;
i--;
}

TB[i]=b;
for(int k=i-1;k>=0;k--)
{
TB[k]=0;
}
A[0]=TB[3];A[1]=TB[7];A[2]=TB[2];A[3]=TB[6];A[4]=TB[1];A[5]=TB[5];A[6]=TB[0];A[7]=TB[4];cout <<endl;
com=0;
for (int j=0;j<8;j++)
{
TB[j]=A[j];
if (TB[j]==0)
TB[j]=1;
else
TB[j]=0;

}
com=0;
for (int j=0;j<8;j++)
{

com=com+TB[j]*pow(2,(7-j));
}
return com;
}





la fonction de cryptage:
int CryptFile(string fin, string fout)//la fonction de crypatge
{
fstream fichier(fin.c_str(),ios::in);
fstream dest(fout.c_str(),ios::out);
int k;
int j=0;
char caractere;
unsigned char ca;
if(fichier)
{
if (dest)
{
while(!fichier.eof()) // tant que l'on est pas à la fin du fichier
{
fichier.get(caractere);
k=comp(caractere);
ca=k;
dest<<ca;
}

dest.close();
j=1;
}
else
{
cerr << "Impossible d'ouvrir le fichier de destination !" << endl;
fichier.close();
}
}
else
cerr << "Impossible d'ouvrir le fichier source !" << endl;

return j;
lundi 1 février 2010 à 10:48:05 | Re : codage d'un fichier texte avec c++

tpoinsot

Bonjour,
Si ça fonctionne, tout va bien.

Tu pourrais utiliser les opérateurs sur les bits
complémentaire(x) : (~x & 0xff)
valeur du bit i de x : (x & (1<<i)) = 0 ou 2^^i, si tu veux 0/1 redécale à droite de i: (x & (1<<i)) >> i


thip
mardi 2 février 2010 à 15:32:46 | Re : codage d'un fichier texte avec c++

mame06

salut,comme g dit plus haut la fct que j'ai faite marche très bien mais mon seul soucis c'est que les paramètres sont de type string (les noms des fichiers) int CryptFile(string fin, string fout) alors que le prototype de la fonction est:
int CryptFile(FILE *Fin, FILE *Fout); j'ai essayé ça mais y'a un message d'erreur qui dit que le type file n'existe pas alors je ne sais pas trop comment faire ou bien s'il y'a une biblio à inclure.
mon deuxième problème c'est comment ouvrir mon fichier dans lequel je dois écrire en mode binaire et ceci en c++.merci de bien vouloir me donner un coup de main.


Cette discussion est classée dans : fichier, fonction, texte, cryptage, crypter


Répondre à ce message

Sujets en rapport avec ce message

Comment créer un fichier texte avec CreateFile? [ par djeauh ] Bonsoir tout le monde. J'ai un petit soucis avec la fonction CreateFile de l'API WIN32. Lorsque je veut ecrire dans un fichier WINDOWS le mets par déf cryptage [ par progrima ] Bonjour tout le monde!!! On me demande de réaliser un programme qui peut crypter des fichier. Le problème c'est que ce programme doit pouvoir crypter Fichier texte écrit avec la fonction fprintf [ par dayvid75014 ] Bonjour à tous,Pendant l'exécution de mon programme, je viens récupérer des informations et les écrire dans un fichier texte. Cependant, lorsque je re Crypter avec DES [ par Sosy08 ] SVP, prenez la peine de tous lire, c'est peut être un peu long, mais sa explique tous. Merci.SVP, est ce que quelqu'un pourez m'aider à écrire un prog Editer dans un fichier texte [ par biakyang ] J'aimerais savoir comment extraire des données afin de pouvoir l'éditer dans un fichier texte. Merci pour les reponses ! Question sur fopen [ par kinouseba ] Bonjour à tous,j'ai une question à vous poser concernant la fonction fopen.J'ai 2 processus distincts, succeptibles d'accéder à un même fichier (à l'o Afficher le contenu d'un fichier texte [ par johndave ] Chers programmeurs, je voudrais, apres avoir ecrire dans un fichier texte, pouvoir afficher son contenu. Quel est le pocesus? Merci bcp. Intégration de fichier texte dans l'excécutable [ par yvoo ] Bonjour,J'utilise Borland C++ builder, et j'utilise des fichier text que je met dans des TStringList. J'aimerais savoir s'il éait possible d'intégrer comment envoyer un fichier texte sur un FTP [ par k1koo ] Bonjour j'aimerais savoir la commande permettant d'envoyer un fichier texte sur un FTP.j'arrive a me connecter sur le site FTP il ne me manque plus qu Création fichier texte. [ par lillith212 ] Bonjour à tous,Très grande débutante sous le language C++, je dois modifier un programme existant.Celui-ci permet de transmettre des informations via


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 8,237 sec (3)

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