2013-05-11 25 views
1

嗨,我有一些代碼加密文本,並將其顯示在textView中,並將其作爲短信發送。加密文本出錯

該算法(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,則輸出變爲h(8),而不是p(16)。

的代碼部分是這樣的:

 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 2013-05-11 12:14:11

+0

您可以加入的「alfabet」的定義是什麼? – 2013-05-11 12:16:27

+0

現在我已經加入這兩種算法和字母:) – 2013-05-11 12:22:33

回答

1

這就是爲什麼你沒有得到你期待的結果;

e是在列表中的第4個值(它0索引,a=0b=1

隨着C=3,結果是4 * 3 = 12,並且13'th字符(索引爲12)被m這是輸出(我不能讓n你的問題的狀態)。

+0

謝謝:)我現在看到了錯誤 – 2013-05-11 12:42:04