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.2
- 回答日時:
変数の値を直接使用するのではなく、変数にbyte型を
使用し、ビット操作で変換した文字列を使用するとい
うのは?
No.3ベストアンサー
- 回答日時:
デコンパイル時に変数の値をわからなくしたいというのが本来の目的ですね。
それは実装に問題があるのではないのでしょうか?
現状はデコンパイルしなくてもJavaプロセスにアタッチして直接メモリをのぞけば生の変数値が見えるということですよね?
対処方法としてはPASSをMD5とかSHAで変換し、プログラムコードに埋め込む。この時点でデコンパイルしてもJavaプロセスにアタッチしてもメモリが除けません。また、この変換値がわかったとしても変換アルゴリズムがわかったとしても返還前の変数値はわかりません。(正確にはわかりにくい。)
で、PASSとの検証はPASSの入力時に同じアルゴリズム(MD5とかSHA)で変換し、変換結果をマッチングさせます。
仕組みをわかりやすく説明すると、以下のような特徴を持つある式があります。この式は離散対数問題を抱えていると思ってください。この式は…、
(1)パスワード → 変換値 ・・・ 簡単
(2)変換値 ← パスワード ・・・ 困難
ということなので(1)で変換した値同士をマッチングすることで実現できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Path型をString型へ変換する(Java)
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Visual Basic でのコードをASCI...
-
int型のゼロ埋め
-
半角カナ文字の変換
-
カタカナをローマジに変換する。
-
JavaのStringクラスに「外字」...
-
javaで入力したの半角カタカナ...
-
javascriptで文字列のsjis利用...
-
replace()での文字列置換について
-
byte配列をImageに変換する
-
javaの初歩的な質問です。
-
C言語32bitから64bitの移行につ...
-
なぜか + が半角スペースに変換...
-
JAVAでSJISのコード変換
-
型変換キャストについて
-
JAVAソースコードの暗号化
-
COBOLで半角カナを全角カナに変換
-
Windows-31Jからutf-8への変換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
Path型をString型へ変換する(Java)
-
int型のゼロ埋め
-
javascriptで文字列のsjis利用...
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
カタカナをローマジに変換する。
-
C言語32bitから64bitの移行につ...
-
UTF-8とUnicodeの互換性
-
COBOLで半角カナを全角カナに変換
-
文字列の比較
-
byte[] を long,float とかに...
-
全角英数字とハイフンを半角に...
-
byte型のマイナスの扱いについて
-
TEXTAREAからのデータを改行入...
-
javaの初歩的な質問です。
-
エクセルVBAで「〜」が表現でき...
-
DBから取得したデータの文字化け
-
[Javascript]エンターキー押下...
おすすめ情報