逆コンパイルを防ぐためにコンパイル済みの Java クラスをロックするにはどうすればよいですか?
これはインターネット上で非常によく議論されているトピックであることは知っていますが、それらを参照した後、結論を出すことができませんでした.
多くの人が難読化ツールを提案していますが、クラス、メソッド、およびフィールドの名前を覚えにくい文字シーケンスで変更しているだけですが、機密性の高い定数値についてはどうでしょうか?
たとえば、パスワード ベースの暗号化技術に基づいて暗号化および復号化コンポーネントを開発したとします。この場合、平均的な Java ユーザーなら誰でもJADを使用してクラス ファイルを逆コンパイルし、パスワード値 (定数として定義) とソルトを簡単に取得でき、小さな独立したプログラムを作成することでデータを復号化できます。
それとも、そのような機密性の高いコンポーネントをネイティブ コード (VC++ など) で構築し、JNI経由で呼び出す必要がありますか?