Frage

Ich habe meine Datenbank auf meinem mobilen Gerät migriert von VistaDB weg, weil es einfach zu langsam ist. Ich verwende protobuf jetzt stattdessen eine Reihe von flachen Dateien auf einer Speicherkarte zu erstellen, das einzige Problem ist, es gibt offensichtlich keine Verschlüsselung.

Welche Verschlüsselungsmethode funktioniert am besten mit protobuf? Ich bin im Grunde eine Sammlung von Datenelementen in eine Datei serialisiert, dann aus der Datei Deserialisieren zurück in meine Sammlung. Ich stelle dar, der beste Ort, um die Verschlüsselung zu setzen in der Filestream auf dem Lese- / Schreib sein würde.

Die Daten werden enthalten NI Nummern, Namen und Adressen, so hat dies sicher sein. Jede Idee, anyone?

War es hilfreich?

Lösung

Ich glaube, Sie auf dem richtigen Weg sind. Sie sollten nur in der Lage sein zu tun, so etwas wie:

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

Für die Grundlagen des .NET-Verschlüsselungs Framework (wie es die ICryptoTransform Objekte zu erhalten, Andere Fragen wie Was ist der beste Weg, kurze Strings in .NET zu verschlüsseln? .

Andere Tipps

Eine weitere Option ist, um tatsächlich den gesamten Ordner zu verschlüsseln, wo die Daten durch die Installation eines systemweiten Dateisystemfilter . Die Vorteile hier sind, dass:

  1. Ihr App-Code ist Agnostiker auf die Verschlüsselung und die Verschlüsselung wird in nativen Code erfolgen.
  2. Da die Verschlüsselung in nativen Code getan wird, es wird schneller sein
  3. Da die Verschlüsselung nicht innerhalb Code verwaltet wird, ist es viel schwieriger, Reverse Engineering und Ihre Schlüssel herauszufinden, Salze, etc.

Natürlich ist der Nachteil (für diejenigen, die schreiben C nicht sowieso) ist, dass Sie es in C # nicht schreiben kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top