CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Sérialization binaire et cryptage

tbop2
tbop2
Niveau 10
17 mars 2010 à 20:58:52

Bonjour,

Je souhaite sérializer des données sécurisées en C#. Je me suis dit que la sérialization binaire allait faire parfaitement l'affaire oui mais voilà...

En ouvrant le fichier .bin avec notepad je m'aperçois qu'une très grande partie des données est déchiffrable (étonnant tout de même, c'est du binaire donc il faudrait que les caractères comme par hasard se soit synchronisés avec un fichier texte standard dans les octets).

Ma question est donc comment crypter facilement mon fichier avec la sérialization .NET ?

tbop2
tbop2
Niveau 10
17 mars 2010 à 21:07:31

http://stackoverflow.com/questions/965042/c-serializing-deserializing-a-des-encrypted-file-from-a-stream FOUND !

tbop2
tbop2
Niveau 10
17 mars 2010 à 22:00:15

Par contre je ne sais pas si quelqu'un peut tester le bout de code qu'il donne mais moi j'ai un problème de déserialization. Il me dit que le header du fichier binaire n'est pas valide.

dnob700
dnob700
Niveau 10
17 mars 2010 à 22:34:03

Complètement au pif, j'essayerai de créer un nouvel objet "key" pour décrypter (identique à celui utilisé pour crypter, mais réinitialisé). Parce que l'état de système cryptographique (que je ne vois initilisé nulle part avec une clef) est peut-être stocké dedans.

Est-ce que tu pourrais coller quelques part le code que tu utilisais avant. J'ai du mal à comprendre le problème que tu avais : est-ce que dans les données sérialisé ton texte apparaissait en clair ? Ou un autre texte ?

tbop2
tbop2
Niveau 10
18 mars 2010 à 12:01:45

Oui en gros dnob l'objet sérializé (qui était un vecteur de class) était hybride, enchainant caractères exotiques ET caractères ASCII me révélant toutes les informations string de mon objet (genre date de naissance, nom, prénom, email, ville).

Je n'y connais strictement rien à la cryptographie je t'avouerais que je comprends son code de loin. Mais mes fonctions étant séparées elles créent déjà deux objets key identiques mais "réinitialisés".

dnob700
dnob700
Niveau 10
19 mars 2010 à 00:09:14

"Je n'y connais strictement rien à la cryptographie je t'avouerais que je comprends son code de loin. Mais mes fonctions étant séparées elles créent déjà deux objets key identiques mais "réinitialisés". "

Mais si tu essaye le code qui est donné sur ce site, tel quel, est-ce qu'il fonctionne ? Si oui, transforme le étape par étape, le plus progressivement possible, en ton code pour voir ou est-ce que ça arrête de fonctionner.

Mais je relis ton premier message et j'ai l'impression de comprendre que ce que tu dis c'est que tu as juste sérialiser tes données, sans les crypter ? Si c'est le cas, c'est absolument normal que ton texte apparaisse en clair. Globalement, dans un paradigme OO, chaque objet, lorsqu'il est sérialisé, écrit les informations dont il a besoin puis il demande à chacun de ses membres qui sont sérialisable de se sérialiser tout seul comme des grand etc. Et pour une chaînes de caractère (qui contient déjà des données binaire donc), le plus simple est juste d'écrire son propre texte (probablement précédé de sa longueur). La sérialisation ne peut en aucun cas être une "protection" pour les donnée (vu qu'il suffit de les désérialiser pour les relire).

Dans le cas du cryptage, ce qui me surprend vraiment, c'est le fait que tu n'utilise pas de clef pour "définir" le cryptage. Tu peux regarder par exemple comment on fait ce genre de chose en Caml, avec le même genre de bibliothèque de cryptage de très haut niveau :
http://svn.quare.fr/viewvc/projets/trunk/passkeeper/passkeeper.ml?revision=263&view=markup
Où je commence par initialiser un générateur, soit pour crypter, soit pour décrypter (avec les même paramètres), puis il est appliqué au flux. Et, si je donne une mauvaise clef pour décrypter, ou d'autre paramètre au cryptosystème, j'ai, pareil, un message d'erreur du genre l'en tête est invalide.

_skip
_skip
Niveau 10
19 mars 2010 à 09:27:07
  1. Tbop2 Voir le profil de Tbop2
  2. Posté le 17 mars 2010 à 20:58:52 Avertir un administrateur

En ouvrant le fichier .bin avec notepad je m'aperçois qu'une très grande partie des données est déchiffrable (étonnant tout de même, c'est du binaire donc il faudrait que les caractères comme par hasard se soit synchronisés avec un fichier texte standard dans les octets).

:d) non ça n'a rien d'étonnant, un caractère est une valeur numérique qui donc correspond à une expression binaire. A l'inverse le boulot d'un éditeur de texte fait de cette expression binaire un caractère c'est pour ça que tu le vois apparaître.

Si ton gros problème c'est qu'on voit le contenu, il te suffit de serializer vers un Stream qui est capable d'encrypter, ou si tu veux un truc juste sommaire, tu peux te contenter d'un Stream de compression.

Si un stream de compression te convient, tu peux utiliser le SDK 7z :
http://www.7-zip.org/sdk.html

Sinon tu as une variante AES built-in que tu peux utiliser (rijndael), voir ici avec les exemples:
http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndael.aspx

tbop2
tbop2
Niveau 10
20 mars 2010 à 13:06:53

Oui dnob mon code est exactement celui qu'il y a sur le site, donc j'utilise bien le mécanisme de décryptage avec des clés de chiffrement.

J'ai vu le Rijndael mais il me semblait que cela semblait bien complexe (rien que le nom ahah !) donc je m'étais jeté sur l'autre solution proposée par un forumeur. Je vais tester la méthode Rijndael officielle de chez Microsoft.

_skip
_skip
Niveau 10
21 mars 2010 à 08:37:35

Ben tout ceci dépend en fait de ce que tu veux comme protection, si les informations ne sont pas spécialement sensibles et que tu veux juste qu'elles n'apparaissent pas en clair, tu peux te contenter de choses bien plus basiques.

Il ne faut pas être trop paranoïaque parfois, surtout que si ton application est un programme desktop qui va tourner chez le client et éventuellement chez le *hacker*, il y a d'autres vulnérabilités telles que la décompilation.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment