2012-10-12 82 views
2

我正試圖編寫一個簡單的加密算法,它是一個隨機的移位模式加密。我已經寫了它基於所有字符的數組,然後使用Collections.shuffle,然後將其與事物相匹配。然而陣列似乎並沒有被重排,輸出文本是相同的輸入Collections.shuffle無法正常工作

這裏是我的方法

static void encrypt(String s) 
    { 
     //Define variable for indexOf output 
     int n; 

     //Encrypted output 
     String output = ""; 

     //Shuffle array to create random replacements 
     Collections.shuffle(Arrays.asList(alphashuff)); 

     //Create new string 
     String alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; 

     for (int index = 0; index < s.length();index++) 
     { 
      char aChar = s.charAt(index); 
      n = alpha.indexOf(aChar, 0); 

      if(n == -1) 
      { 
       output = output + aChar; 
      } 
      else 
      { 
       output = output + alphashuff[n]; 
      } 

     } 

     //Print encrypted string to console 
     System.out.println("Encrypted Text: " + output); 
    } 

回答

4

你不是洗牌的陣列,而不是使用列表中的陣列創建。在發送洗牌之前創建的列表:

//I'm assuming alphashuff is a char[] 
List<Character> lstCh = new ArrayList<Character>(); 
for(char c : arrCh) { 
    lstCh.add(c); 
} 
Collections.shuffle(lstCh); 
//... 
else 
{ 
    output = output + lstCh.get(n); 
} 
+0

是否有可能再輸出洗牌列表,然後返回作爲數組 – jskrwyk

+0

@JamesKraw答案更新。 –

+0

你可以使用'Arrays.asList'來創建列表。 –

1
String[] alphashuff = ...; 
List list = Arrays.asList(alphashuff); 
Collections.shuffle(list); 

現在這個列表洗牌其中包括alphashuff的值。

,並使用此類似 - output = output + list.get(n);