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 13
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 13
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 13
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 13
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
Rejoignez-nous