2016-12-08 3 views
-3

텍스트를 암호화하고 해독 할 수있는 프로그램을 만들고 있습니다. 현재 나의 암호화 및 암호 해독 프로세스는 암호화의 중복/오류를 피하기 위해 사례 전환과 함께 발생합니다. 나는 이것이 작동해야하는 것처럼 느낀다. 기본적으로 암호화는 다음과 같은 방식으로 작동합니다. FOR 루프는 String 입력의 모든 문자를 읽은 다음이를 CASE SWITCH로 전환하여 특정 문자열로 바꿉니다. 다음과 같은 오류 메시지가 나타납니다 :Java 암호화 : "java.lang.OutOfMemoryError : Java heap space"

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
    at java.util.Arrays.copyOf(Arrays.java:3332) 
    at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124) 
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:541) 
    at java.lang.StringBuffer.append(StringBuffer.java:350) 
    at java.util.regex.Matcher.appendReplacement(Matcher.java:888) 
    at java.util.regex.Matcher.replaceAll(Matcher.java:955) 
    at java.lang.String.replaceAll(String.java:2223) 
    at OR_v5_12_5_16.main(OR_v5_12_5_16.java:161) 

----jGRASP wedge2: exit code for process is 1. 
----jGRASP: operation complete. 

다음은 약간 수정 된 단축 코드 버전입니다. 실제 코드 블록은 모두 26 개의 대문자와 26 개의 소문자를 통해 실행됩니다. 오류 메시지가 나타나기 전에 프로그램이 멈춘 것처럼 보입니다.

for (int i = 0; i < txt.length(); i++){ 

    String txt_char = String.valueOf(txt.charAt(i)); 

     switch (txt_char){ 

      case "A": 

       txt = txt.replaceFirst("A", "11110000"); 
       break; 
     } 
} 
+0

코드를 [mcve]로 게시하면 도움을받을 수 있습니다. 우리는 효과적인 도움을 줄 수는 없습니다. – AJNeufeld

+0

코드 및 로그를 복사하여 붙여 넣으십시오. 이 경우 이미지를 사용하지 마십시오. – sanastasiadis

+0

@AJNeufeld 지금까지 제공되었습니다 – PeculiarTendencies

답변

-1

암호화 코드는 훨씬 더 효율적으로 만들 수 있습니다 :

  • 결과
  • 문자열로 다시 하나의 문자를 변환하지

에 필요한 메모리를 미리 할당 예 :

StringBuilder result = new StringBuilder(txt.length() * 8); 

int len = txt.length(); 
for (int i = 0; i < len; i++) { 
    char ch = txt.charAt(i); 

    switch (ch) { 
     case 'A': result.append("11110000"); break; 
     case 'B': result.append("10101010"); break; 
     // ... etc ... 
    } 
} 

txt = result.toString(); 

암호화 중에 원래 String을 수정하지 않으면 이미 암호화 된 데이터를 다시 암호화 할 가능성이 없어집니다.

+0

감사합니다. 나는 그것을 시도 할 것을 확신 할 것이다! 도와 줘서 고마워! – PeculiarTendencies