• 締切済み

CLASSファイルの暗号化

*.classファイルを見ると、固定の設定等が丸見えのようです。 これを暗号化または分からなくする方法はないのでしょうか? 主に String str="..."; の部分が丸見えなのでどうにかしたいです。 (参考にした資料)http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/solaris/javac.html

みんなの回答

noname#49664
noname#49664
回答No.1

まず、発想として「クラスファイルを暗号化する」というのはちょっと難しいかと思います。難読化といって、ソースを読みにくくするツールはありますが、ご質問はリテラルが読めないようにしたい、ということですよね? だとするとそれでは難しいかも。 考えとしては、例えばですが事前にテキストを暗号化しておいたものをリテラルに設定し、それを必要に応じて復号化して使う、というのはどうでしょう。簡単な暗号化については以下のような記事がありました。 http://www.itmedia.co.jp/enterprise/articles/0407/01/news017.html これならクラスの中身を覗かれてもリテラルは取得できないと思います。 ただし、Javaのクラスファイルはデコンパイル(プログラムをソースコードの状態に戻すこと)できます。ソースコードに戻されてしまったら暗号化もへったくれもないわけで、全部丸見えです。もともとそういう仕様の言語であることを割り切って使うしかないように思えます。 ちょっと特殊な方法としては、クラスを暗号化し、専用の実行環境で動かすという方法は考えられます。以下のようなソフトがありました。ただし、暗号化すると普通のJava環境では動かなくなります。付属の専用の実行環境でないと動かないという難点があります。 http://www.vector.co.jp/soft/other/java/se378529.html?site=n

yn001ster
質問者

お礼

詳細にありがとうございます。 結構皆さん困ることだと思ったので、標準でそのような機能があるのかと持ったら、Javaは簡単に逆コンパイルまでできてしまうのですね!? んー、面倒ですが、内部的に暗号化しておいて、それを複合化して使うしかなさそうですね。 ありがとうございました。

関連するQ&A