7

次へ: Javaでプログラム実行間でデータを保存する最良の方法は何ですか? テキスト ファイルを使用してそのように情報を保存できることは既に知っていますが、プログラムの実行の間にプログラムによって生成された情報を保存するためのより良い方法があるかどうか疑問に思っていました。

また、情報を安全に保つためにそれを行う方法はありますか? 具体的には、エンドユーザーがアクセスできないようにしたいです。

4

11 に答える 11

6

プログラムの実行の間にプログラムによって生成された情報を配置する他の方法があるかどうか疑問に思いましたか?

を使用ObjectOutputStreamしてファイルにシリアル化し、を使用しObjectInputStreamて元に戻します。

また、情報を安全に保つためにそれを行う方法はありますか?エンドユーザーからアクセスできますか?

コードがエンドユーザーのシステムで実行されている場合は、いいえ、データの取得を防ぐ方法はありません-デバッガーを接続してプログラムの状態を検査するのは簡単なので、なんとかしてエンコードしようとする価値はありません。ランニング。バイナリ形式として、Javaシリアル化は、技術者以外のユーザーがそれを解読するのを防ぎます。これは、あなたが望むことができる最高のものです。

于 2009-08-16T20:18:52.870 に答える
5

自分で使用したことはありませんが、JDKのjava.util.prefs.Preferencesが元々設計されたものだと思います。

于 2009-08-16T20:22:17.980 に答える
2

プロパティを使用して情報を格納できます。安全にしたい場合は、ある種の暗号化ストリームを介して実行します。

于 2009-08-16T19:34:30.793 に答える
1

JavaのQuick'n'dirtypersistenceに興味があるかもしれません。

于 2009-08-16T20:24:12.157 に答える
1

ファイルの暗号化、またはパスワード付きのローカル データベース。

于 2009-08-16T19:32:22.093 に答える
1

db4oを使用してデータを保存できます。これはオブジェクト データベースであり、暗号化をサポートしています。

于 2009-08-16T19:43:51.893 に答える
1

一部の人々は、シリアライゼーションの使用を提案しました。シリアル化には多くの欠点があることに注意してください。

  • バージョン管理の問題。シリアライズされたクラスで何かを変更すると、古いバージョンのプログラムで書かれたシリアライズされたファイルを簡単に読み取ることができなくなります。
  • 正確なファイル形式がわからない。ファイルを読み取る必要がある別のプログラムを後で、おそらく別のプログラミング言語で作成したい場合は、非常に困難です。

シリアル化は、長期保存には適していません。

代わりに、小さな埋め込みデータベースを使用することをお勧めします。(組み込みデータベースは、プログラムと同じプロセスで実行されるデータベースです)。Sun の Java には、Apache Derby のバージョンであるJava DBが含まれていることに注意してください。HSQLDBもあります。これは、組み込みデータベースとして使用できる別の小規模で純粋な Java データベースです。

于 2009-08-17T07:31:01.927 に答える
0

シリアル化はどうですか?

ユーザーが読むことはできず、比較的簡単です。

于 2009-08-16T20:50:51.967 に答える
0

他の人が言っているように、データをシリアル化する方法は無数にあります。SQLiteや単なるシリアル化のような軽量なものを使用できます。データを暗号化しようとすると、特にJavaコードの場合、簡単に元に戻すことができるため、無効になる可能性があることを理解してください。

ただし、ユーザーの大部分がJavaプログラムをリバースエンジニアリングしてデータを復号化する方法を理解するのに十分な技術を持っていない場合は、別の回答で述べたようないくつかの基本的な暗号化方法を回避できるはずです。そして良くなりなさい。自分が制御していないマシンに何かが存在するときはいつでも、最も執拗なユーザーがそれをクラックする方法を考え出さないようにする方法はないことを理解してください。

個人的には、sqliteを使用し、フィールドに入力するデータに簡単な暗号化を使用することをお勧めします。そうすれば、誰かがローカルDBファイルに接続できるほど賢い場合でも、何らかの方法で暗号化アルゴリズムを逆にする必要があります。通常のユーザーの99.9%は、このレベルの調査に煩わされることはありません。

于 2009-08-16T20:58:49.327 に答える
0

Javaを開始するときに使用するのに最適なのは、ObjectOutputStreamまたはテキストファイルを使用することです。経験を積んだら、データベースを使用できます。

于 2009-08-16T20:22:31.100 に答える
0

シリアル化手法としての XML は、オブジェクトのシリアル化などのバイナリ形式よりも、ストレージを調整するプログラムの将来の変更に対してより回復力があります。ただし、これにより、ほとんどのユーザーにとって非常に読みやすく、変更しやすくなります。

非常に単純な圧縮/解凍では、ほとんどすべてのユーザーがデータの実際の内容を取得できなくなります。現在の書き込みストリームの周りで GZipInputStream/GZipOutputStream を使用すると、仕事ができます。詮索に対する防御が精巧になればなるほど、ソフトウェアのユーザーに与える影響が大きくなります。

于 2009-08-17T12:03:51.047 に答える