Cryptage de données d'un fichier

Résolu
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010
- 2 juil. 2009 à 11:52
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010
- 5 juil. 2009 à 16:16
Bonjour
Je souhaiterai créer un programme pour crypter un fichier quelconque. Pour cela je voulais passer par la suite d'octes qui composent le fichier, donc obtenir le fichier sous la forme d'une suite de nombres ( 0 à 255 ). Au final, je dois aussi reenregistrer ce fichier au décryptage, donc faire l'opération inverse. Comment dois-je faire pour cela?

Raphaël programeur en C++

11 réponses

cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
2 juil. 2009 à 13:14
Salut,

Toutes les fonctions nécessaire sont documentées sur ce site.
Voilà un début de prog :
<hr size="2" width="100%" />#include
#include <fstream>

using namespace std;

int main ()
{
  int length;
  char *buffer;
  int i;

  ifstream is;
  is.open("test.txt", ios::binary );

  // Récupération de la taille du fichier
  is.seekg(0, ios::end);
  length = is.tellg();
  is.seekg(0, ios::beg);

  // Allocation d'une zone de la taille du fichier
  buffer = new char[length];

  // Lecture de tout le fichier
  is.read(buffer, length);
  is.close();
 
  // Affichage des caractères en décimal
  for (i = 0; i < length; i++)
    cout << (int)buffer[i] << " ";

  delete[] buffer;
  return 0;
}
3
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
4 juil. 2009 à 17:49
Ah heu vi c'est normal s'il considère que tes chars sont signés. Donc si tu veux pas de négatif, utilise des unsigned char.

  unsigned char *buffer;
  ...
  buffer = new unsigned char[length];
3
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

2 juil. 2009 à 14:23
merci beaucoup

Raphaël programeur en C++
0
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

2 juil. 2009 à 20:15
Nouveau problème:
Je travaille avec les applications MFC, et je ne sais pas comment convertir de CString à char*. Quelqu'un peut-il m'aider?

Raphaël programeur en C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

3 juil. 2009 à 15:56
Salut rt15,

Tout algorithme a l'air correct, mais je me heurte à un problème
buffer = new char[length];
le tableau n'est pas assez grand length vaut -1!!

Raphaël programeur en C++
0
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
3 juil. 2009 à 16:09
Le bouton "réponse acceptée", c'est pas pour dire que tu accepte la réponse, mais pour dire que c'est la (ou les) réponse(s) qui t'ont aider à résoudre ton problème.

Si length vaut -1, c'est que le fichier était vide... Donc pas besoin de faire un tableau !
0
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

3 juil. 2009 à 16:48
Le fichier faisait en fait 36 Ko.
0
cs_rt15
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
3 juil. 2009 à 18:06
Ah...

  is.seekg(0, ios::end);
  length = is.tellg();

a fait n'importe quoi alors ? tellg renvoie -1 en cas d'erreur.
Peut être un problème à l'ouverture du fichier.

Tu peux utiliser fail pour t'assurer que l'ouverture s'est bien passée.
<hr size="2" width="100%" />  ifstream is;
  is.open("test.txt", ios::binary );
  if (is.fail())
  {
    is.close();
    cout << "Erreur à l'ouverture" << endl;
    return 1;
  }
0
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

3 juil. 2009 à 18:29
Bon, c'est bon. J'ai corrigé.
0
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

3 juil. 2009 à 18:39
Est-ce norml qu'il y ait des valeurs négatives?
0
raphchar
Messages postés
22
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
19 juin 2010

5 juil. 2009 à 16:16
D'accord, de toutes façons ce n'est pas grave le programme fonctionne quand même.

Raphaël programeur en C++
0