JAVAソースコードの暗号化
失礼致します。
カテゴリを間違えて登録してしまった為再度登録させてもらいます。
JAVAのソースコードに公開したくないロジックが含まれており、
ソースコードを暗号化したいと考えています。
もし同じようなことで悩んだ方がいらっしゃいましたら、
アドバイスいただきたいと思い書き込みします。
まず「どこまで暗号化(隠蔽)できればよいのか」という基準については、
「jadで逆コンパイルしても内部のロジックが読み取れなければよい」
と考えています。(特にディレクトリのパスが指定していますのでその部分、変数の中身等)
ためしにフリーのProGuardを使用してみましたが、
クラスファイル名やメソッド名、変数名がa,b,cなどに変換されたものの、変数の中身は丸見えのままでした。
【元データの逆コンパイル】
String confFilePath = rootPath + "conf/";
String masterFile = confFilePath + subDir + "Pass.xml";
String confSubDir = confFilePath + subDir;
String outputPath = rootPath + "file/" + subDir;
【ProGuardをかけて逆コンパイル】
Object obj;
obj = s + "conf/";
String s2 = obj + s1 + "Pass.xml";
String s3 = obj + s1;
String s4 = s + "file/" + s1;
ProGuard自体、ソースコードの軽量化に使われるのが主流なようなので、仕方がないといえば仕方がないと思いますが、
どうにか読み取られないようにできないものでしょうか。
ご意見、お待ちしています。
※次はDashOの評価版を試してみようと考えていますが、
あまりお金はかけたくないので、正規に使う見込みがありません。
ただお金をかければこんだけの暗号化はできるというのがあれば教えてもらいたいです。
何日も調べてかなり悩んでいます、、お願いします。
No.3ベストアンサー
- 回答日時:
デコンパイル時に変数の値をわからなくしたいというのが本来の目的ですね。
それは実装に問題があるのではないのでしょうか?
現状はデコンパイルしなくてもJavaプロセスにアタッチして直接メモリをのぞけば生の変数値が見えるということですよね?
対処方法としてはPASSをMD5とかSHAで変換し、プログラムコードに埋め込む。この時点でデコンパイルしてもJavaプロセスにアタッチしてもメモリが除けません。また、この変換値がわかったとしても変換アルゴリズムがわかったとしても返還前の変数値はわかりません。(正確にはわかりにくい。)
で、PASSとの検証はPASSの入力時に同じアルゴリズム(MD5とかSHA)で変換し、変換結果をマッチングさせます。
仕組みをわかりやすく説明すると、以下のような特徴を持つある式があります。この式は離散対数問題を抱えていると思ってください。この式は…、
(1)パスワード → 変換値 ・・・ 簡単
(2)変換値 ← パスワード ・・・ 困難
ということなので(1)で変換した値同士をマッチングすることで実現できます。
No.2
- 回答日時:
変数の値を直接使用するのではなく、変数にbyte型を
使用し、ビット操作で変換した文字列を使用するとい
うのは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 2 2022/05/14 09:45
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- アプリ おすすめのパスワード管理アプリを教えてください。(iOSとWindows対応) 4 2023/01/19 02:08
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
int型のゼロ埋め
-
下記問題の答えが"D"になる意味...
-
数字を読みに変換する方法について
-
COBOLで半角カナを全角カナに変換
-
IBM漢字コード⇒SJIS変換方法
-
C言語32bitから64bitの移行につ...
-
javaの初歩的な質問です。
-
javascriptで文字列のsjis利用...
-
[Javascript]エンターキー押下...
-
Windows-31Jからutf-8への変換...
-
Visual Studio 6.0でビルド可能...
-
カタカナ変換
-
文字リテラルについて
-
Visual Basic でのコードをASCI...
-
byte型のマイナスの扱いについて
-
replace関数で複数の文字の変換...
-
TEXTAREAからのデータを改行入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
カタカナをローマジに変換する。
-
javascriptで文字列のsjis利用...
-
int型のゼロ埋め
-
Visual Basic でのコードをASCI...
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
JavaのStringクラスに「外字」...
-
C言語32bitから64bitの移行につ...
-
byte[] を long,float とかに...
-
UTF-8とUnicodeの互換性
-
[Javascript]エンターキー押下...
-
エクセルVBAで「〜」が表現でき...
-
Windows-31Jからutf-8への変換...
-
substring バイト単位でやりたい
-
IBM漢字コード⇒SJIS変換方法
-
byte配列をImageに変換する
-
Arduino(C言語) String "1101" ...
おすすめ情報