私はデスクトップJavaアプリケーションを書いています。プログラムは、顧客のサーバーからXMLファイルを受け取ります。いくつかのタグのデータは整数型であり、いくつかの数式で「暗号化」されています。プログラムがXMLファイルを解析するとき、それらのタグを復号化する必要があります。復号化の式は次のようになります。復号化
int decrypted = (int) Math.ceil(Math.pow ((idProduct + 1) / 3, 1.5));
されたデータは、AES-128で暗号化されたH2データベースに保存されます。
私が必要としているのは、どういうわけかそのような式を逆コンパイルから隠すことです。
私の試み:
1。数式を非表示にするために、難読化ツールを使用しようとしましたが、数式でsmthを実行するものは見つかりませんでした。ProGuard 4.8によって難読化され、JADによって逆コンパイルされたコードは次のとおりです。
private String d(String paramString) {
long l = Long.valueOf(paramString).longValue();
int i = (int)Math.ceil(Math.pow((l + 1L) / 3L, 1.5D));
String str = String.valueOf(i);
return str;
}
ご覧のとおり、ProGuardは数式で何もしませんでした。ZelixKlassMasterのような市販の難読化ツールを使用する余裕はありません。
2. JET Excelsiorを試してみようと思っていました(ただし、Java 7アプリはまだサポートされていないようです)。また、上司に感謝されるとは思いません。
3. launch4jのようなラッパーを使用することも考えましたが、そこから.jarを抽出するのが難しいかどうかはわかりません。
4.次に、Cで外部ライブラリを記述してJNIを使用することを考えました。しかし、競合他社はそのライブラリを使用するだけでよいようです。
5. IMOの優れた解決策は、ASMで復号化関数を記述し、これをJavaコードに直接貼り付けることです。これはCです。残念ながら、これは不可能です。
6.クラスの暗号化は使用しても意味がありません。
すべてを逆コンパイル/逆アセンブルできることを理解しています。JADを実行して一度に取得するよりも少し難しくしたいと思います。
教えてください