4

EclipseのJavaソースコードファイルから実行可能なjarファイルを作成すると、JVMで実行できるクラスファイルが作成されると思います。

私がこれを尋ねている理由は、すべてのパスワードを保持する Java アプリケーションを作成する予定だからです。アプリは、パスワードを要求するインターフェイスで構成され、パスワードが正しい場合はパスワードを表示します。この件に関する私の質問は次のとおりです。

  • 実行可能な * jar ファイル*は正確には何で構成されていますか?
  • 実行可能なjarファイルがクラスファイルで構成されている場合、そのクラスファイルを解釈して、パスワードを悪用するソースコードを表示できますか?
  • cmd から実行可能な jar ファイルを実行し、「java -jar xxx」と入力すると。「xxx」はファイル名を意味しますが、 - jar」はjarファイルを実行することを意味し、「java」はJVMでこの次のファイルを実行することを意味しますか?
  • これは.exeファイルのようなもので、 .exeファイルに変換すると読み取り可能なソースコードに元に戻すことができません.
4

3 に答える 3

7

素朴な質問: パスワードがソース コードにある場合、それは非常に見つけやすい方法でクラス ファイルにあります。

実行可能な jar ファイルは、クラス ファイルと開始するクラスに関する情報を含む特別なファイルを含む jar ファイル (つまり、jar サフィックスが付いた zip ファイル) です。

バイト コードを逆コンパイルできます: http://www.program-transformation.org/Transform/JavaDecompilersでソース コードを取得できます。しかし、逆コンパイルせずに実際にバイトコードでパスワードを見ることができます

はい。in java -jar xxx java は、xxx という名前の jar ファイルを使用して jvm を実行することを意味します。

作成された言語とツールがわかっている場合は、クラス ファイルと同じように exe ファイルを逆コンパイルできるはずです。また、ソース コード内のパスワードでなくても、.exe ファイル内で簡単に見つけることができます。はい、jarファイルはexeファイルに似ていますが、説明したものとは異なります。

パスワードを保持するアプリケーションを作成する場合は、アプリケーションのユーザーとして起動時に提供するマスター パスワードを使用して、保存されたパスワードを暗号化するように作成します。パスワードをソースコードに保存しないでください。

于 2012-06-03T15:52:51.417 に答える
6

Java クラス ファイルは、読み取り可能な Java コードに逆アセンブルできます。ただし、すべてのパスワードはプレーン テキストとして保存されるため、コンパイルされたクラス ファイルからすべてのパスワードを抽出することができます (たとえば、stringsGNU マシンでコマンドを試してください)。

したがって、いいえ、パスワードはクラス ファイル内では本質的に安全ではありません (したがって、jar は簡単に解凍できるため、jar アーカイブ内では安全ではありません)。

必要なのは、ある種の暗号化を実装し、プログラムがパスワードを暗号化されたファイルに保存できるようにすることです。次に、パスワードを解凍できるようにするために、プログラムで復号化キーを入力する必要があります。このキーはJava プログラムに含めるべきではなく、プログラムを実行するたびに提供する必要があります。

于 2012-06-03T15:50:14.250 に答える
4

基本的に、どんなに頑張っても、誰でも簡単に逆コンパイルして読むことができます。

可能であれば、パスワードを保存せず、サーバー上でオンラインで比較する (非同期暗号化を使用) か、毎回アプリケーションに与えられるマスター パスワードを使用して保存します。

できない場合は、パスワードをそのまま保存しないでください。私が考えることができる最善の方法は、パスワードのハッシュコードを保存 (およびチェック) することです。ユーザーがパスワードを入力すると、SHA-256が実行され、結果のハッシュコードが保存されているパスワードのハッシュコードと比較されます。レインボーテーブルから保護するためにを加えてください。

これの考え方は、ハッシュ関数は一方向のみであり、パスワードはそのハッシュから回復できないということです。したがって、十分に強力なパスワードであれば、妥当な時間内にだれもパスワードを取得できないはずです。

これに関する非常に良い読み物は wiki リンクですが、最も注目すべきは jasypt.org のこの記事です

とはいえ、ハッシュを含むファイルを暗号化して別のセキュリティ層を追加しようとした場合でも、復号化されたパスワードは逆コンパイラとデバッガを使用して見つけることができます。通過する。したがって、これは実際の暗号化というよりも、あいまいさによるセキュリティです。

于 2012-06-03T16:03:39.260 に答える