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

Langage C++ Discussion :

Crypter un fichier de données


Sujet :

Langage C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    907
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 907
    Points : 372
    Points
    372
    Par défaut Crypter un fichier de données
    Bonjour,

    Je génère des données dans un fichier texte.
    Je voudrais savoir comment crypter et décryper ces données en C++ quand je génère le fichier texte ?

    Merci,
    Christophe

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Déjà on ne dit pas "crypter" mais "chiffrer". Il y a le verbe "chiffrer" (transformer un texte clair en texte inintelligible via une clef), le verbe "déchiffrer" (opération inverse) et le verbe "décrypter" (technologie d'attaque qui permet de retrouver le message d'origine sans avoir la clef). Mais comme ce dernier verbe n'accepte pas d'antonyme (on ne peut pas chiffrer un message sans avoir de clef) le verbe "crypter" ne peut pas s'employer.

    Sinon ben il existe divers algorithmes. Depuis le chiffre de César (décaler les lettres de "n" positions) jusqu'à RSA (chiffrer sur une clef publique asymétrique ce qui donne un texte ne pouvant être déchiffré que depuis la clef privée). Tout dépend donc du but à atteindre.

    En C/C++, un des trucs de bases est de passer par le XOR. En effet, si CLAIR xor CHIFFRE = SECRET alors SECRET xor CHIFFRE = CLAIR (et CLAIR xor SECRET = CHIFFRE).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Il existe un bon article d'introduction à la crypographie sur Developpez : http://ram-0000.developpez.com/tutoriels/cryptographie/. La section 2 est d'ailleurs consacré à des rappels terminologiques similaires à ceux de Sve@r ^^

    Pour savoir quelle technique de chiffrement utiliser, il faut savoir ce que tu souhaites obtenir : quelque chose qu'un mec lambda ne comprendra pas avec notepad, quelque chose d'un peu plus sécurisé mais pas forcément inviolable, quelque chose d'inviolable (à savoir si cela existe vraiment).

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bktero Voir le message
    quelque chose d'inviolable (à savoir si cela existe vraiment).
    Ca existe. C'est le "one time pad" de Gilbert Vernam. Il s'agit de chiffrer un message via un simple Vigenère mais avec une clef totalement aléatoire aussi longue que le message à chiffrer, clef qu'on jette après usage. Avec une clef de ce type, on ne peut plus découper le texte chiffré polyalphabétique en "n" textes monoalphabétiques qui offriraient ensuite des points d'appui au travers de l'analyse des fréquences.
    Mais tout autant ce système est totalement inviolable, tout autant il ne pourra jamais être employé à grande échelle. Déjà sur la façon d'obtenir le "totalement aléatoire" et ensuite vu qu'il serait tout aussi difficile de faire passer la clef que le message d'origine. Toutefois ça existe déjà dans certains systèmes comme le téléphone rouge entre Washington et Moscou qui utilise une technologie basée sur ce principe (un même trousseau de clefs déposé d'un côté et de l'autre et à chaque appel la clef utilisée disparait)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Déjà on ne dit pas "crypter" mais "chiffrer". Il y a le verbe "chiffrer" (transformer un texte clair en texte inintelligible via une clef), le verbe "déchiffrer" (opération inverse) et le verbe "décrypter" (technologie d'attaque qui permet de retrouver le message d'origine sans avoir la clef). Mais comme ce dernier verbe n'accepte pas d'antonyme (on ne peut pas chiffrer un message sans avoir de clef) le verbe "crypter" ne peut pas s'employer.
    Ce qui me hérisse le poil, c'est que cette terminologie, si stricte soit-elle, n'a pas de sens étymologiquement parlant (Edit: et intuitivement non plus, d'ailleurs). Car la notion de dissimulation, elle est dans la racine grèque κρυπτ (crypt), et non pas dans le mot "chiffre"...
    Si je remplace "bonjour" par 98 111 110 106 111 117 114, j'ai remplacé par des chiffres et pourtant ce n'est pas un "chiffrement"...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Non, c'est un "cryptage" des données Le verbe "crypter" reste marqué comme étant un néologisme dans le Larousse même si j'avoue l'utiliser régulièrement, de même que "encrypter" ou "encryption"...


    Enfin... On pinaille et ça ne fait pas avancer la résolution du problème de cjacquel

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    L'exemple d'école de "chiffrement" à clé, c'est le XOR.

    Ça tombe bien, car à moins de prendre des précautions spéciales, c'est l’algorithme celui qui met en évidence le plus facilement (et fiablement) un problème inhérent au chiffrement en C: le résultat d'un chiffrement qui agit directement sur les octets du message (plutôt qu'agir sur le texte lui-même, comme le bon vieux chiffre de César) entre deux "chaînes de caractères C" n'est plus une "chaîne de caractères C" mais un tableau d'octets bruts: En effet, il peut contenir des octets nuls, des caractères non-imprimables ou des séquences invalides dans l'encodage utilisé.

    Conclusion: À moins d'utiliser un chiffrement basé sur la manipulation du texte, le résultat du chiffrement n'est plus du texte (du moins, jusqu'à ce qu'il soit déchiffré). Il faut toujours garder ça en tête, et être prêt:
    • soit à stocker les données sous une forme autre que du texte (fichier binaire)
    • soit à convertir les données brutes obtenues vers un format texte permettant de les exprimer (séquences d'échappement, hexadécimal, base64...)


    Edit: Au passage, à propos de cet article, je dois dire que je n'ai jamais vu "Alice and Bernard" en Anglais, je pense qu'il y a une petite erreur dans ce tableau.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Si je remplace "bonjour" par 98 111 110 106 111 117 114, j'ai remplacé par des chiffres et pourtant ce n'est pas un "chiffrement"...
    Pour moi si. Parce que ce texte sera imbittable pour qui ne possède pas la clef de déchiffrement (le code ASCII).

    Et pour la terminologie, quand j'étais ado je lisais des livres des aventures d'un agent secret nommé "Langelot" (créé en 1962 par Vladimir Volkoff, un authentique espion qui prenait le pseudo "Lieutenant X" pour ses bouquins). Ben dans ses livres, chaque fois que le héro devait transmettre un message, il employait le verbe "chiffrer" (et parfois "surchiffrer" pour indiquer qu'il le faisait deux fois parce que là c'était vraiment sérieux). Et ce terme était donc déjà employé ainsi à cette époque bien avant les premiers ordinateurs de bureau (et même avant que Diffie, Hellman et Merckle aient trouvé leur algo en 1976 !!!).

    Quant à cjacquel, ben s'il veut que son problème avance il serait bien qu'il s'investisse un peu dans son topic quoi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    En l'occurence, chiffrer ne signifie pas "traduire en chiffres" mais "appliquer un chiffre", qui est un algorithme réversible de transformation de texte.
    le chiffrement est le nom de cette opération.

    Et la différence entre déchiffrement et décryptage, c'est le fait d'avoir ou non les connaissances du chiffre: la méthode et ses paramètres.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

Discussions similaires

  1. Convertir un fichier de données quelconque en un fichier XML
    Par cari dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 06/06/2005, 18h11
  2. [C#] [.NET CF] des fichiers de données avec l'application
    Par safisoft13 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/06/2005, 09h30
  3. Fichier de données
    Par Philippe LE PONT dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 05/08/2004, 11h28
  4. [Fichier] Récupérer donnée d'un fichier
    Par johnlehardos dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/05/2004, 13h42
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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