次へ: Javaでプログラム実行間でデータを保存する最良の方法は何ですか? テキスト ファイルを使用してそのように情報を保存できることは既に知っていますが、プログラムの実行の間にプログラムによって生成された情報を保存するためのより良い方法があるかどうか疑問に思っていました。
また、情報を安全に保つためにそれを行う方法はありますか? 具体的には、エンドユーザーがアクセスできないようにしたいです。
次へ: Javaでプログラム実行間でデータを保存する最良の方法は何ですか? テキスト ファイルを使用してそのように情報を保存できることは既に知っていますが、プログラムの実行の間にプログラムによって生成された情報を保存するためのより良い方法があるかどうか疑問に思っていました。
また、情報を安全に保つためにそれを行う方法はありますか? 具体的には、エンドユーザーがアクセスできないようにしたいです。
プログラムの実行の間にプログラムによって生成された情報を配置する他の方法があるかどうか疑問に思いましたか?
を使用ObjectOutputStream
してファイルにシリアル化し、を使用しObjectInputStream
て元に戻します。
また、情報を安全に保つためにそれを行う方法はありますか?エンドユーザーからアクセスできますか?
コードがエンドユーザーのシステムで実行されている場合は、いいえ、データの取得を防ぐ方法はありません-デバッガーを接続してプログラムの状態を検査するのは簡単なので、なんとかしてエンコードしようとする価値はありません。ランニング。バイナリ形式として、Javaシリアル化は、技術者以外のユーザーがそれを解読するのを防ぎます。これは、あなたが望むことができる最高のものです。
自分で使用したことはありませんが、JDKのjava.util.prefs.Preferencesが元々設計されたものだと思います。
JavaのQuick'n'dirtypersistenceに興味があるかもしれません。
ファイルの暗号化、またはパスワード付きのローカル データベース。
db4oを使用してデータを保存できます。これはオブジェクト データベースであり、暗号化をサポートしています。
一部の人々は、シリアライゼーションの使用を提案しました。シリアル化には多くの欠点があることに注意してください。
シリアル化は、長期保存には適していません。
代わりに、小さな埋め込みデータベースを使用することをお勧めします。(組み込みデータベースは、プログラムと同じプロセスで実行されるデータベースです)。Sun の Java には、Apache Derby のバージョンであるJava DBが含まれていることに注意してください。HSQLDBもあります。これは、組み込みデータベースとして使用できる別の小規模で純粋な Java データベースです。
シリアル化はどうですか?
ユーザーが読むことはできず、比較的簡単です。
他の人が言っているように、データをシリアル化する方法は無数にあります。SQLiteや単なるシリアル化のような軽量なものを使用できます。データを暗号化しようとすると、特にJavaコードの場合、簡単に元に戻すことができるため、無効になる可能性があることを理解してください。
ただし、ユーザーの大部分がJavaプログラムをリバースエンジニアリングしてデータを復号化する方法を理解するのに十分な技術を持っていない場合は、別の回答で述べたようないくつかの基本的な暗号化方法を回避できるはずです。そして良くなりなさい。自分が制御していないマシンに何かが存在するときはいつでも、最も執拗なユーザーがそれをクラックする方法を考え出さないようにする方法はないことを理解してください。
個人的には、sqliteを使用し、フィールドに入力するデータに簡単な暗号化を使用することをお勧めします。そうすれば、誰かがローカルDBファイルに接続できるほど賢い場合でも、何らかの方法で暗号化アルゴリズムを逆にする必要があります。通常のユーザーの99.9%は、このレベルの調査に煩わされることはありません。
Javaを開始するときに使用するのに最適なのは、ObjectOutputStreamまたはテキストファイルを使用することです。経験を積んだら、データベースを使用できます。
シリアル化手法としての XML は、オブジェクトのシリアル化などのバイナリ形式よりも、ストレージを調整するプログラムの将来の変更に対してより回復力があります。ただし、これにより、ほとんどのユーザーにとって非常に読みやすく、変更しやすくなります。
非常に単純な圧縮/解凍では、ほとんどすべてのユーザーがデータの実際の内容を取得できなくなります。現在の書き込みストリームの周りで GZipInputStream/GZipOutputStream を使用すると、仕事ができます。詮索に対する防御が精巧になればなるほど、ソフトウェアのユーザーに与える影響が大きくなります。