2013-05-11 1 views
1

안녕하세요 저는 텍스트를 암호화하여 textView에 표시하고 SMS로 보내는 코드가 있습니다.암호화 된 텍스트가 잘못 나온다

알고리즘은 (letterInt *이 상수) % 29 = 새로운 letterInt

때문에 기본적으로는 일정

알파벳이

처럼 문자 값이 시간에 29 분할의 나머지 인
private List<Character> alfabet = new ArrayList<Character>(); 
    alfabet.add('a'); 
    alfabet.add('b'); 
    alfabet.add('c'); 
    alfabet.add('d'); 
    alfabet.add('e'); 
    alfabet.add('f'); 
    alfabet.add('g'); 
    alfabet.add('h'); 
    alfabet.add('i'); 
    alfabet.add('j'); 
    alfabet.add('k'); 
    alfabet.add('l'); 
    alfabet.add('m'); 
    alfabet.add('n'); 
    alfabet.add('o'); 
    alfabet.add('p'); 
    alfabet.add('q'); 
    alfabet.add('r'); 
    alfabet.add('s'); 
    alfabet.add('t'); 
    alfabet.add('u'); 
    alfabet.add('v'); 
    alfabet.add('w'); 
    alfabet.add('x'); 
    alfabet.add('y'); 
    alfabet.add('z'); 
    alfabet.add('æ'); 
    alfabet.add('ø'); 
    alfabet.add('å'); 

문제는 C가 1보다 커질 때마다 텍스트가 암호화되어 있지 않다는 것입니다. 예 : d = 4이지만, C = 4를 선택하면 출력은 p (16)가 아닌 h (8)가됩니다.

코드 부분은 다음과 같이이다 : 당신은 당신이 기대하고있는 결과를 얻지 못하고있는 이유

 char[] bogstaver = tekstString.toCharArray(); 
     for (int i = 1; i <= bogstaver.length; i++) { 
      if (bogstaver[i-1] == ' ' || bogstaver[i-1] == '.' || bogstaver[i-1] == '?' || bogstaver[i-1] == '!' || 
        bogstaver[i-1] == ',' || bogstaver[i-1] == ';' || bogstaver[i-1] == '+' || bogstaver[i-1] == '(' || 
        bogstaver[i-1] == ')' || bogstaver[i-1] == '{' || bogstaver[i-1] == '}' || bogstaver[i-1] == ':'){ 
        continue; 
      } 

      if(CType == 1){ 
       C = Integer.valueOf(faktorA); 
       CType = 2; 
      } 
      else if (CType == 2){ 
       C = Integer.valueOf(faktorB); 
       CType = 3; 
      } 
      else if (CType == 3){ 
       C = Integer.valueOf(faktorE); 
       CType = 1; 
      } 

      bogstaver[i-1] = alfabet.get((alfabet.indexOf(bogstaver[i-1]) * C)%29); 
     } 
     String endeligeTekst = new String(bogstaver); 
     if (k == 1){ 
      krypteredeTekst.setText(endeligeTekst); 
     } 
     else{ 
      sendString(endeligeTekst, Nr); 
     } 
+1

당신은? – Ridcully

+0

당신이 'alfabet입니다'의 정의를 추가 할 수 제발, 당신은 사용하는 암호화 알고리즘을 설명 할 수 있습니까? –

+0

이 지금은 모두 알고리즘을 추가 한 및 알파벳 :) –

답변

1

이다;

e

이 (가 0 C=3으로 b=1

, a=0, 색인이 목록에서 4 번째 값, 결과는) 4 * 3 = 12, 인덱스 (12)의 13'th 문자 (이다 이다 m 출력 (I 귀하의 질문 상태로 n를 얻을 수 없다).

+0

고마워요 : 나는 지금 결함을 참조하십시오 –

관련 문제