IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

chiffrement/déchiffrement fichier exercice du tutorial


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut chiffrement/déchiffrement fichier exercice du tutorial
    Bonjour,
    Je voulais chiffrer et déchiffrer une image, j'ai trouvé ce code dans le tutorial manipulation de fichier, mais le fichier de destination qui est pour moi l'image cryptée (extension .png) ne s'ouvre pas paint ou autre ne reconnait pas le format, y a t il une solution pour afficher l'image cryptée correctement?
    voiçi le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #include <string.h>
    char * saisir_chaine(char * lpBuffer, int buf_size);
    unsigned char f1(unsigned char c);
    unsigned char f1_inv(unsigned char c);
    int main()
    {
    char choix[2];
    printf("Tapez 1 pour chiffrer et 2 pour dechiffrer ");
    saisir_chaine(choix, sizeof(choix));
    if (*choix != '1' && *choix != '2')
    fprintf(stderr, "Cette valeur est invalide.\n");
    else
    {
    char src[FILENAME_MAX];
    FILE * fsrc;
    printf("Entrez le nom du fichier a %s : ", *choix == '1' ? "chiffrer" : "dechiffrer");
    saisir_chaine(src, sizeof(src));
    fsrc = fopen(src, "rb");
    if (fsrc == NULL)
    perror(src);
    else
    {
    char dest[FILENAME_MAX];
    FILE * fdest;
    printf("Entrez le nom du fichier de destination : ");
    saisir_chaine(dest, sizeof(dest));
    if (strcmp(src, dest) == 0)
    printf("La source ne peut pas etre en meme temps la destination.\n");
    else
    {
    fdest = fopen(dest, "wb");
    if (fdest == NULL)
    perror(dest);
    else
    {
    /* Notre technique : chiffrement/dechiffrement octet par octet */
    int c;
    unsigned char (*f)(unsigned char) = *choix == '1' ? f1 : f1_inv;
    printf("Traitement en cours ...");
    fflush(stdout);
    while ((c = getc(fsrc)) != EOF)
    putc(f(c), fdest);
    fclose(fdest);
    printf("\nTermine.\n");
    }
    }
    fclose(fsrc);
    }
    }
    return 0;
    }
    char * saisir_chaine(char * lpBuffer, int buf_size)
    {
    char * ret = fgets(lpBuffer, buf_size, stdin);
    if (ret != NULL)
    {
    char * p = strchr(lpBuffer, '\n');
    if (p != NULL)
    *p = '\0';
    else
    {
    int c;
    do
    c = getchar();
    while (c != EOF && c != '\n');
    }
    }
    return ret;
    }
    unsigned char f1(unsigned char c) /* Notre fonction de chiffrement */
    {
    /* Principe : on fait decaler de maniere circulaire tous les bits de un pas vers la gauche */
    unsigned char msb = (c & 0x80) >> 7; /* Le bit le plus a gauche */
    c <<= 1;
    c |= msb;
    return c;
    }
    unsigned char f1_inv(unsigned char c) /* Notre fonction de dechiffrement */
    {
    unsigned char lsb = c & 1; /* Le bit le plus a droite */
    c >>= 1;
    c |= (lsb << 7);
    return c;
    }

  2. #2
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Salut,

    c'est normal que le fichier obtenu ne puisse pas s'ouvrir avec un logiciel d'affichage d'images : ce n'est plus un fichier png. Tu ne chiffres pas une image mais un fichier ...
    Si tu veux chiffrer une image mais que cela reste une image :
    il faut ouvrir le fichier
    "récupérer" la matrice des pixels de l'image
    modifier cette matrice
    sauver le fichier

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Merci pour la réponse, et pour récupérer la matrice y a t il des fonctions ou bien des bibliothèques bien précises à utiliser?

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    ça dépend de ton environnement (linux/windows) ; pour le png tu as libpng ou gdk par exemple qui sont portables. Ça dépend aussi du type d'appli que tu développes ... dis-nous en un peu plus.

Discussions similaires

  1. Exemple de chiffrement-déchiffrement 128 bits
    Par n5Rzn1D9dC dans le forum Contribuez
    Réponses: 2
    Dernier message: 16/05/2025, 02h28
  2. Java et chiffrement de fichiers
    Par TiteFlora dans le forum Général Java
    Réponses: 2
    Dernier message: 03/12/2012, 21h21
  3. Chiffrement de fichier avec AES
    Par Leelith dans le forum Sécurité
    Réponses: 7
    Dernier message: 08/10/2012, 15h40
  4. Chiffrement Déchiffrement string
    Par Kexian_ dans le forum Général Python
    Réponses: 11
    Dernier message: 26/04/2012, 02h07
  5. Chiffrement de fichier PHP
    Par raoufpark dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 18/08/2008, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo