質問

遅すぎるため、モバイル デバイス上のデータベースを VistaDB から移行しました。現在、代わりに ProtoBuf を使用して、ストレージ カード上に一連のフラット ファイルを作成しています。唯一の問題は、明らかに暗号化がないことです。

どの暗号化方式が ProtoBuf に最適ですか?基本的に、データ エンティティのコレクションをファイルにシリアル化してから、ファイルからコレクションに逆シリアル化して戻しています。暗号化を配置する最適な場所は、読み取り/書き込みの FileStream 内であると思います。

データには NI 番号、名前、住所が含まれるため、安全である必要があります。誰かアイデアはありますか?

役に立ちましたか?

解決

私はあなたが正しい軌道に乗っていると思います。あなただけのような何かを行うことができる必要があります:

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

ICryptoTransformオブジェクトを取得する方法など、.NETの暗号化フレームワークの基礎(については、<のhref = "https://stackoverflow.com/questions/845623/whats-the-best-way-toのような他の質問を参照してください-encrypt-短い文字列・イン・ネット」>何が.NETで短い文字列を暗号化するための最良の方法は?のます。

他のヒント

別のオプションは、システム全体に ファイルシステムフィルター. 。ここでの利点は次のとおりです。

  1. アプリのコードは暗号化に依存せず、暗号化はネイティブ コードで行われます。
  2. 暗号化はネイティブコードで行われるため、高速になります。
  3. 暗号化はマネージ コード内にないため、リバース エンジニアリングしてキーやソルトなどを把握するのは非常に困難です。

もちろん、欠点は (C を書かない人にとっては) C# で書けないことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top