2017-10-24 16 views
-1

文字配列からASCII値を取り、コンソールに表示するコードを書いています。暗号化された方法で文字配列を宣言する

public class Test1 { 

    public static void main(String[] args) { 
     char array[] = new char[] {65, 32, 81, 117, 105, 99, 107, 32, 66, 114, 111, 119, 110, 32, 70, 111, 120, 32, 74, 117, 109, 112, 101, 100, 32, 79, 118, 101, 114, 32, 65, 32, 76, 97, 122, 121, 32, 68, 111, 103 }; 

     for(int l=0;l<array.length;l++) { 
      System.out.print(array[l]); 
     }  
    } 
} 

プログラムがよりコンパクトで出力を推測するために、そのハードになるようにchar配列にASCII値を格納するための任意の効率的な方法があります。

+1

あなたは見ているように見えます難読化のため。有用なものが見つかったかどうかを確認するには、[このスレッド](https://stackoverflow.com/questions/2537568/best-java-obfuscator)をチェックしてください。 – Bernat

+2

[XY問題はこちら](https://meta.stackexchange.com/questions/66377)のように見えます。あなたが実際にやろうとしていることは何ですか? [不明瞭なセキュリティ](https://en.wikipedia.org/wiki/Security_through_obscurity)は、通常、行く方法ではありません。 – Ivar

+1

各要素をcharにキャストする必要はありません。彼らはchar配列にあります。 – khelwood

答えて

2

「秘密」をJavaコードに格納する場合、コードを逆コンパイルして読みやすいので、常に脆弱です。

シークレットを難読化したい場合は、文字列のバイトをbase64に変換して保存するか、バイトを「Not」にしてクラスパス上のjarファイルにバイナリリソースとして格納します。

最終的には、コードに付属していないキーを使用してJCEなどのフレームワークを使用して適切な暗号化の道を辿ることがない限り、秘密は安全ではありません。

(ああ、および「クイックブラウンフォックスはレイジードッグを飛び越えたが」H、TまたはSが含まれていません通常は、だ;-)オーバーをジャンプします)

+0

の脆弱性はここでは問題ではありません。コンパイルして実行せずに出力を推測できないように、そのコードを混乱させるだけです。 :D:D ps - H、T、Sの観測に感謝します:)私はそれを修正します。 –

+0

配列をExcelにコピーしてデコードしました。今まで選択したメカニズムが複雑になるので、維持するのが苦痛になるか、または逆コンパイルなしで手動でデコードするのが比較的簡単になるでしょう。 他の従業員が信頼できないという問題はありますか?セキュリティ上の問題ではなく、人事問題がありますか? – Spangen

関連する問題