Question

J'ai migré ma base de données sur mon appareil mobile loin de VistaDB parce qu'il est tout simplement trop lent. J'utilise maintenant Protobuf au lieu de créer une série de fichiers plats sur une carte de stockage, le seul problème est qu'il n'y a évidemment pas de cryptage.

Quelle méthode de cryptage fonctionne mieux avec Protobuf? Je suis fondamentalement sérialisation une collection d'entités de données dans un fichier, puis désérialisation à l'arrière fichier dans mes collections. Je figure le meilleur endroit pour mettre le cryptage serait dans le FileStream sur la lecture / écriture.

Les données contiennent les numéros NI, les noms et adresses, donc ce doit être sécurisé. Toute idée de quelqu'un?

Était-ce utile?

La solution

Je pense que vous êtes sur la bonne voie. Vous devriez juste être capable de faire quelque chose comme:

ICryptoTransform encryptor = ...
Stream encStream = new CryptoStream(outputFileStream, encryptor, CryptoStreamMode.Write);
Serializer.Serialize(encStream, obj);
encStream.FlushFinalBlock()
encStream.Close();

ICryptoTransform decryptor = ...
Stream decStream = new CryptoStream(inputputFileStream, decryptor, CryptoStreamMode.Read);
Serializer.Deserialize<Type>(decStream);
decStream.FlushFinalBlock()
decStream.Close();

Pour les bases du cadre de cryptage de .NET (y compris la façon d'obtenir les objets ICryptoTransform, voir d'autres questions comme

Autres conseils

Une autre option consiste à chiffrer réellement le dossier entier où les données sont stockées par l'installation d'un système à l'échelle filtre du système de fichiers . Les avantages ici sont les suivantes:

  1. Votre code d'application est agnostique pour le cryptage et le cryptage se fera dans le code natif.
  2. Étant donné que le cryptage se fait dans le code natif, il va être plus rapide
  3. Étant donné que le cryptage n'est pas le code managé à l'intérieur, il est beaucoup plus difficile à désosser et comprendre vos clés, sels, etc.

Bien sûr l'inconvénient (pour ceux qui ne pas écrire C de toute façon) est que vous ne pouvez pas écrire en C #.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top