質問はより一般的に建設的な点と実現からのものですが、例や例とのリンクに感謝します(理論だけではありません)。
考え方は次のとおりです。
- すべてをローカルで行う必要があります。
- どんなライブラリでも許可されていますが、プログラム全体が移植可能であるべきです。
- プラットフォーム - Win7+
- 完全にサイズ制限なし。
- より安全 - より良い。
- WPF。
理由は聞かないでください。上記の ^ はすべて必須であり、要点です。
これでポイント自体に近づきます。したがって、プログラムのワークフローとデータ管理は次のようになります。
- ユーザーは、難読化された単一インスタンスなどを開始します(例ではこれを省略できます)WPF exe。
- ユーザーがファイルを選択します (既に存在する場合は保存時に上書きされ、存在しない場合は保存時に作成されます) (これも省略できます)。
- これで、ユーザーは暗号化に必要なすべてのデータを提供します (たとえば、AES の場合 - キーと IV) (暗号化は議論のためにアップされています - もちろん、テキストの壁全体を読んだ後、どちらが私に適していると思うか、その理由を教えてください。ありがとう) を押して続行し、ファイルから暗号化されたデータを読み取ります (ファイルが選択されている場合)。
先に進む前に、データの構造を理解する必要があります。
Dictionary<Tuple<string, string, string>, Dictionary<string, string>>
- したがって、Tuple の値は、ファイルから一度にロードする必要がある 3 つの等しく重要な文字列のようなものです (さらに説明することは、それらがどのように機能するかが正確ではないことはわかっていますが、既に述べたように ^ Dictionary は視覚化と説明の容易さのためだけに、データ管理は提案のためにUPしています)。
- ユーザーには 3 つの検索テキストボックスが付与され、これら 3 つのいずれかまたはすべてを一度に検索して、結果をテーブル/リストの形式で表示できるはずです (今のところ、データセットは次のように見えることがわかっています)。行きますが、すべてがそれほど単純である場合、私はあなたの助けを求めません)。この時点で、ユーザーはその ^ ディクショナリの新しい KeyValue ペアを作成し、結果を保存して、復号化され、ファイルが追加/上書きされるか、新しい場合は書き込まれるようにする必要があります。
- ユーザーが結果に満足したら、必要なものを選択して続行できます。選択したキーについて、すべての値のキーが暗号化されたファイルから読み込まれますが、それぞれの値は読み込まれません。これらのキーはすべて、ある種のリストで表されます。
もう一度スクロールして、キーを選択し、4 つのボタンのいずれかを押します。
削除 - キーと値を削除しますが、タプルのままです。
コピー - ファイルからそれぞれの値をロードし、クリップボードに入れます。
編集 - それぞれの値をロードし、キーと値の両方を編集できます。
New - 新しい KeyValue ペアを作成します。
ユーザーはいつでも保存を押すことができ、現在の状態が暗号化されたファイルに保存されます。または、他のファイルに保存します(この場合、すべての値を取得する代わりに、そのファイルをコピーして変更する必要があります)。
- ユーザーは、値の追加と変更を行ったり来たりすることができます。
- ユーザーが結果に満足したら、アプリを閉じて、テキストの壁を終了します。
また、ロードされたすべての値を安全な文字列に保存する必要がありますか、それとももっと良いものがありますか? (サードパーティのプログラムがメモリから読み取れないように、過去にアプリの呼び出しやインジェクションを防止する何らかのセキュリティを開発しましたが、それでも-安全な文字列または何か他のものですか?)。
とにかく、この部分まで読んでくれるすべての人に感謝します。質問がある場合、または私の質問の一部を理解していない場合は、お知らせください。詳しく説明したり、より詳しく説明したりします。ありがとうございます。
編集 1: オーケー アレックスtl/drを作成してみます:
パート 1 - ファイルからデータのチャンクを部分的に復号化してデシリアライズし、必要に応じてファイルから他の値をフェッチし、必要に応じて変更/追加を保存する方法を教えてください。何でもお勧めします。
パート 2 - メモリに読み込まれたデータをサード パーティのアプリから保護する最善の方法。