ProtoBuf を使用する場合の最適な暗号化方法は何ですか?
-
22-08-2019 - |
質問
遅すぎるため、モバイル デバイス上のデータベースを 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で短い文字列を暗号化するための最良の方法は?のます。
他のヒント
別のオプションは、システム全体に ファイルシステムフィルター. 。ここでの利点は次のとおりです。
- アプリのコードは暗号化に依存せず、暗号化はネイティブ コードで行われます。
- 暗号化はネイティブコードで行われるため、高速になります。
- 暗号化はマネージ コード内にないため、リバース エンジニアリングしてキーやソルトなどを把握するのは非常に困難です。
もちろん、欠点は (C を書かない人にとっては) C# で書けないことです。
所属していません StackOverflow