2017-10-24 7 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

당신이 찾고있는 것 같다 (아, 그리고 일반적으로는 ;-)을 통해 점프의 H, T 또는 S를 포함하지 않는 "빠른 갈색 여우가 게으른 개를 뛰어 넘었다") 난독 화를 위해. 도움이되는 것이 있으면 [이 스레드] (https://stackoverflow.com/questions/2537568/best-java-obfuscator)를 확인하십시오. – Bernat

+2

[XY 문제는 여기]와 비슷합니다 (https://meta.stackexchange.com/questions/66377). 당신이 실제로하려고하는 것은 무엇입니까? [무명실을 통한 보안] (https://en.wikipedia.org/wiki/Security_through_obpurity)은 보통가는 길은 아닙니다. – Ivar

+1

각 요소를 char로 캐스트 할 필요가 없습니다. 그들은 문자 배열에있어. – khelwood

답변

2

"비밀"을 Java 코드에 저장하려는 경우 코드를 디 컴파일하고 읽기가 쉽기 때문에 항상 취약합니다.

비밀을 혼란스럽게하려는 경우 문자열의 바이트를 base64로 변환하여 저장하거나 "아니요"바이트를 저장하고 클래스 경로의 jar 파일에 이진 리소스로 저장할 수 있습니다.

궁극적으로 코드와 함께 제공되지 않는 키가있는 JCE와 같은 프레임 워크를 사용하여 올바른 암호화 방법을 사용하지 않으면 비밀이 안전하지 않습니다.

+0

취약점은 여기에 문제가되지 않습니다 .. 단지 컴파일러가 컴파일을하지 않고 출력을 추측 할 수 없다는 것을 혼란스럽게 만들 필요가 있습니다. : D : D ps - H, T 및 S 관측에 감사드립니다. :) 나는 그것을 바로 잡을 것입니다. –

+0

어레이를 Excel로 복사하여 디코딩했습니다. 나는 당신이 선택하는 메커니즘이 너무 복잡하여 유지 보수가 어려워 지거나 디 컴파일없이 수동으로 디코딩하는 것이 상대적으로 쉽다는 것을 확신합니다. 다른 직원이 신뢰할 수 없다는 문제가 있습니까? 보안 문제보다는 HR 문제가 있습니까? – Spangen