Pregunta

He migrado mi base de datos en mi dispositivo móvil alejado de VistaDB porque es demasiado lento. Ahora estoy usando protobuf en lugar de crear una serie de archivos planos en una tarjeta de almacenamiento, el único problema es obviamente hay ningún cifrado.

¿Qué método de encriptación funciona mejor con protobuf? Estoy básicamente la serialización de una colección de entidades de datos a un archivo, a continuación, deserializar desde el Archivo de nuevo en mis colecciones. Calculo el mejor lugar para poner el cifrado sería en el FileStream en la lectura / escritura.

Los datos contendrán los números de NI, nombres y direcciones, por lo que este tiene que ser seguro. Cualquier idea de alguien?

¿Fue útil?

Solución

Creo que estás en el camino correcto. Usted sólo debe ser capaz de hacer algo como:

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

En los fundamentos de la estructura de cifrado de .NET (incluyendo cómo conseguir los objetos ICryptoTransform, ver otras preguntas como ¿Cuál es la mejor manera de cifrar las cadenas cortas en .NET? .

Otros consejos

Otra opción es para cifrar en realidad toda la carpeta en la que los datos se almacenan mediante la instalación de una de todo el sistema archivo de filtro del sistema . Aquí la ventaja es que:

  1. El código de aplicación es agnóstico para el cifrado y el cifrado se realiza en código nativo.
  2. Dado que el cifrado se realiza en código nativo, que va a ser más rápido
  3. Dado que el cifrado no es código administrado dentro, es mucho más difícil de realizar ingeniería inversa y averiguar sus llaves, sales, etc.

Por supuesto, la desventaja (para aquellos que no escriben todos modos C) es que no se puede escribir en C #.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top