2014-03-07 55 views
0

這是我的代碼到目前爲止。我需要運行代碼的編碼部分5次,然後解碼編碼的次數相同。我想出瞭如何對消息進行編碼,但現在我無法弄清楚如何通過代碼運行「編碼」或「解碼」變量來加強ecryption。如何多次運行加密程序以加強編碼?

public class Codes 
    { 
     /** 
     * Encode and decode a message using a key of values stored in 
     * a queue. 
     */ 
     public static void main(String[] args) 
     { 
      int[] key = {7, 6, 5, 2, 8, 5, 8, 6, 4, 1}; 
      Integer keyValue; 
      String encoded = "", decoded = ""; 
      String message = "Queues are useful for encoding messages."; 
      Queue<Integer> encodingQueue = new LinkedList<Integer>(); 
      Queue<Integer> decodingQueue = new LinkedList<Integer>(); 

      // load key queues 
      for (int scan = 0; scan < key.length; scan++) 
      { 
       encodingQueue.add(key[scan]); 
       decodingQueue.add(key[scan]); 
      } 

      // encode message 
      for (int scan = 0; scan < message.length(); scan++) 
      { 
       keyValue = encodingQueue.remove(); 
       encoded += (char) (message.charAt(scan) + keyValue); 
       encodingQueue.add(keyValue); 
      } 

      System.out.println ("Encoded Message:\n" + encoded + "\n"); 


      // decode message 
      for (int scan = 0; scan < encoded.length(); scan++) 
      { 
       keyValue = decodingQueue.remove(); 
       decoded += (char) (encoded.charAt(scan) - keyValue); 
       decodingQueue.add(keyValue); 
      } 

      System.out.println ("Decoded Message:\n" + decoded); 
     } 


    } 

截至目前我收到這樣的輸出:

Encoded Message: 
X{jwmx(gvf'{xgnzt&jpy&jpktlorh'sju{fokw/ 

Decoded Message: 
Queues are useful for encoding messages. 

爲了完成這個節目,我需要的輸出看起來像這樣:

Encoded Message 1: X{jwmx(gvf'{xgnzt&jpy&jpktlorh'sju{fokw/ 
Encoded Message 2: _?oyu}0mzg.?}iv•|,nq?,orsytuvi.yow?kwq{0 
Encoded Message 3: f?t{}?8s~h5??k~??2rr?2tt{~|{zj5•ty?p•w•1 
Encoded Message 4: m?y}[email protected]?i<??m???8vs?8yv????~k<?y{?u?}?2 
Encoded Message 5: t?~•??H•?jC??o???>zt?>~x?????lC?~}?z???3 
Decoded Message 5: m?y}[email protected]?i<??m???8vs?8yv????~k<?y{?u?}?2 
Decoded Message 4: f?t{}?8s~h5??k~??2rr?2tt{~|{zj5•ty?p•w•1 
Decoded Message 3: _?oyu}0mzg.?}iv•|,nq?,orsytuvi.yow?kwq{0 
Decoded Message 2: X{jwmx(gvf'{xgnzt&jpy&jpktlorh'sju{fokw/ 
Decoded Message 1: Queues are useful for encoding messages. 

我估計在爲了做到這一點,我需要使用循環來通過程序運行「編碼」和「解碼」變量。但是我不知道如何做到這一點。

+0

請給出一點背景。告訴你的期望,爲什麼,以及你得到什麼。否則,我們會整天盯着代碼,只是爲了得出結論,它正在做那裏寫的東西。 – vonbrand

+1

您實際上並沒有通過多次運行算法來加強任何事情。它所做的只是爲每個角色添加一個常量,如果你多次這樣做,你只需要改變哪個常量是有效添加的。例如:通過加上7來加密第一個字母,然後再次加上7來加密結果。你可以通過添加14來完成同樣的事情。 – Wyzard

+0

當我給出答案時,我錯誤地閱讀了你的代碼;我希望我的更新更有用。 – erickson

回答

1

如果使用單獨的函數爲encode()decode()操作這將是更容易:

class Codes { 

    public static void main(String[] args) { 
    ... 
    } 

    private static String encode(String plaintext, Queue<Integer> encodingQueue) { 
    ... 
    } 

    private static String decode(String ciphertext, Queue<Integer> decodingQueue) { 
    ... 
    } 

} 

這是否幫助?