Partage
  • Partager sur Facebook
  • Partager sur Twitter

Transformer n'importe quel fichier en binaire.

Anonyme
25 mars 2013 à 23:00:33

Bonjour,

avec mes amis nous avons pour projet de créer un programme d'échange de fichiers cryptés en C++. Pour cela nous nous sommes dit que tout d'abord il nous faudrait transformer chaque fichier en binaire, les crypter, les envoyer, décrypter et ensuite retraduire du binaire. 

Je me pose deux questions. Tout d'abord comment traduire n'importe quel fichier que ce soit image ou archive en binaire et est ce que tout les fichiers sont de base en héxadécimal ?

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2013 à 23:14:20

Ce qu'il faut te dire, ce que tous les fichiers ne sont qu'une suite octet (ayant une valeur entre 0 et 255).

Ensuite, il existe plusieurs types d'encodage.

Par exemple, il y a l'encodage ascii qui fait correspondre des lettres de base aux différentes valeurs d'un otcet. Avec cet encodage, 1 octet = 1 caractère.

=> http://www.asciitable.com/

Si tu as un fichier ayant seulement des octets entre 97 et 122, tu as donc un fichier pouvant etre qualifié de fichier texte ne contenant que des caractères minuscule.

Ce que l'on appel un fichier binaire, c'est un fichier qui contient des valeurs ne correspondant à aucun caracètre (les valeurs 0 à 26 par exemple).

Si tu veux obtenir un fichier binaire à partir d'un fichier texte, tu peux donc t'amuser à ajouter une valeur fixe à tous les octets.

Pour le décryptage, il faudra soustraire.

Un cryptage que j'aime bien utilisé car assez simple est le cryptage XOR. Je te laisse cherché sur google comment ça marche ;)

  • Partager sur Facebook
  • Partager sur Twitter
25 mars 2013 à 23:41:59

Ou alors, ouvrir le fichier en mode binaire, faire un xor, l'enregistrer et pouf, n'importe quel type de fichier est codé. Du simple texte au programme en passant par les images et les vidéos. :)
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2013 à 8:42:50

Oui enfin c'est du chiffrement intéressant pour un exercice mais ça ne vaut rien pour une application distribuée. Une solution beaucoup plus robuste serait d'utiliser un système de clefs publiques et privées, un peu comme pour le protocole HTTPS ou SSH, dans le cas d'un partage de données bien entendu.
  • Partager sur Facebook
  • Partager sur Twitter
Développeur d'Actiona, logiciel d'automatisation de tâches : actiona.tools - Site Web : jmgr.net
26 mars 2013 à 12:49:30

Ah tient, ils ont enfin réussi à réintégrer les anciens messages.

Cela tombe bien car le cryptage XOR a fait l'objet d'un exercice.

Sauf que les liens ne semble pas trop fonctionné donc il faudra attendre (ou naviguer page par page).

=> http://www.siteduzero.com/forum/sujet/exercices-venez-vous-entrainer-41065

Janvier 09 CRYPTO 3: Cryptage XOR string, algorithmes Nanoc solution 8
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
26 mars 2013 à 18:20:40

Merci pour toutes ces informations je regarde ça et je vous tient au courant. Mon but principale est de crypter n'importe quel type de fichier avec le système RSA. Je me demandais si il valait mieux passer les fichiers en mode binaire pour facilliter le cryptage. C'est pour cela que j'ai posé la question mais si l'on peut tout simplement crypter un fichier .jpg ou .rar directement sans avoir de problème lors du décryptage alors je ferai ça mais je ne sais pas si cela fonctionne.
  • Partager sur Facebook
  • Partager sur Twitter
26 mars 2013 à 19:01:41

Cela ne sert à rien de crypter en binaire.

RSA s'occupe de transformer une valeur en une autre (avec la clef publique). Qu'il s'agisse d'une valeur correspondant à une lettre (et donc un fichier texte) ou une valeur ne correspondant à rien (et donc un fichier binaire), cela ne change strictement rien.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 mars 2013 à 15:47:42

Ok donc même si les caractères qui composent un fichier .jpg sont des symbole qui partent dans tous les sens, je crypte donc directement le tout ?
  • Partager sur Facebook
  • Partager sur Twitter
27 mars 2013 à 16:23:24

Oui, direct avec RSA, sans te poser de questions.

Et RSA te donnera d'autres symbole qui partiront dans d'autres sens ^^

  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2021 à 20:34:24

Salut, je sais que cette question est vielle et je ne veux pas faire de détérage.

Cependant j'ai la réponse à la question (si des gens se demandent ajd).

Pour ouvrir un fichier en binaire, tu peux utiliser la commande xxd sur Linux.

Cette commande ouvre le fichier en hexa (que tu convertis ensuite en binaire)

  • Partager sur Facebook
  • Partager sur Twitter
13 avril 2021 à 21:54:59

Déterrer pour demander des précisions sur une solution, why not, pour ajouter des compléments ce n'est pas la philo, contrairement à stackoverflow.

Sinon, comme cela a été dit dans la première réponse tout est déjà en binaire si tant est que cela veuille dire quoique ce soit. Le choix de comment on interprète une séquence d'octets n'est qu'un choix de l'humain. Que je prenne les octets 2 par 2 pour recomposer des std::int16_t en big endian, ou chaque octet comme des std::uint8_t, ou chaque octet comme des caractères ASCII, ou du latin9, ou de l'OEM-850, ou que je permette des réassociations dynamiques comme en UTF-8, ce ne sera que MON choix d'interprétation.

xxd permet d'interpréter chaque octet comme un std::uint8_t, et affiche chaque nombre correspondant en hexa décimal. Il y a même une intégration via menus dans gvim -- normal, c'est généralement distribué avec vim.

  • Partager sur Facebook
  • Partager sur Twitter
C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.
14 avril 2021 à 9:05:47

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL