Domanda

Ho migrato il mio database sul mio dispositivo mobile da VistaDB perché è semplicemente troppo lento. Ora sto utilizzando protobuf invece per creare una serie di file flat su una scheda di memoria, l'unico problema è che non c'è ovviamente alcuna crittografia.

Quale metodo di cifratura funziona meglio con protobuf? Sto fondamentalmente serializzazione una collezione di entità di dati in un file, quindi deserializzazione dal file nuovamente dentro le mie collezioni. Immagino che il posto migliore per mettere la crittografia sarebbe nella FileStream in lettura / scrittura.

I dati verranno contenere numeri NI, nomi e indirizzi, quindi questo deve essere sicuro. Qualsiasi idea di qualcuno?

È stato utile?

Soluzione

Credo che tu sia sulla strada giusta. Si dovrebbe solo essere in grado di fare qualcosa di simile:

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();

Per le basi del framework .NET di cifratura (compreso come ottenere gli oggetti ICryptoTransform, Altri domande come Qual è il modo migliore per crittografare brevi stringhe in .NET? .

Altri suggerimenti

Un'altra opzione è quella di cifrare in realtà l'intera cartella in cui i dati sono memorizzati con l'installazione di un livello di sistema file system Filtro . I vantaggi qui sono che:

  1. Il tuo codice applicazione è agnostico per la cifratura e la crittografia verrà fatto in codice nativo.
  2. Dal momento che la crittografia è fatto in codice nativo, che sta per essere più veloce
  3. Dal momento che la crittografia non è all'interno di codice gestito, è molto più difficile da decodificare e capire le chiavi, sali, ecc.

Naturalmente lo svantaggio (per coloro che non scrivono C in ogni caso) è che non si può scrivere in C #.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top