1

私は protobuf-net を使用して、オブジェクトのコンテンツを暗号化、シリアル化、ファイルに保存し、復号化して元のオブジェクトに逆シリアル化した後にファイルのコンテンツを使用しています。

オブジェクトは、それが作成されたマシン上のアプリケーションを介して完全に復号化および逆シリアル化できますが、まったく同じアプリケーションが別のマシンで実行されたときにまったく同じファイルを読み取ると、例外がスローされ、既存のファイルの 1 つを参照するように求められます。スタックオーバーフローに関する質問。現在、正確なスタック トレースを投稿することはできませんが、まもなく投稿する予定です。

私の質問は、オブジェクトのシリアル化とファイルへの保存が行われるマシンの物理構成は、他の場所での可用性に関係がありますか?

連載の趣旨に反するし、理解にズレがあるので、あってはならないことだと思います。

すべての助けに心から感謝します。

ありがとう!

編集:

ありがとうマルク!-返信と素晴らしいライブラリ自体の両方。スタック トレース、使用された暗号化技術、コンテンツの長さとバイト数に関する詳細は、後で投稿します。同じコードが1台のマシンでファイルを正常に作成して使用するため、暗号化/復号化コードのロジックに問題があるとは思えませんが。作成されたファイルは GUID を使用して名前が付けられているため、既存のファイルの上書きも除外される可能性があるため、名前が繰り返される可能性はほとんどありません。「ある時点でファイルをテキストとして扱うことによって」とはどういう意味ですか?

4

1 に答える 1

0

いいえ、マシン構成に依存するべきではありません。例として、通常の .net でデータをシリアライズしてから、Windows Phone でデシリアライズするか、ブラウザーの unity で、MonoTouch を介して iOS でデシリアライズすることは完全に合理的です。

それで、私の最初の懸念は、それが本当に「まったく同じファイル」であるかどうかです。特に、復号化(一部の暗号化技術マシン構成を使用しますが、それは protobuf-net とは関係ありません)

復号化後に長さとバイト数を確認することを強くお勧めします (または、サイズが大きい場合はハッシュ関数を使用します)。一般的なエラー:

  • 暗号化/復号化コードのエラー
  • より少ないデータで既存のファイルを上書きし、最後に古いゴミを残します (その場合: ファイルを必ず切り捨ててください)
  • ある時点でファイルをテキストとして扱うなど、マシン間でファイルを転送するときの破損

再現可能な例があれば (ここで、またはここで公開できない場合は電子メールで)、さらに多くのことを言うことができるかもしれません。

于 2012-10-26T14:59:24.267 に答える