2012-12-11 48 views
0

我需要製作一個程序來加密和解密用戶輸入的內容。我無法找出一種將所有字符組合成加密單詞的方式。這裏是我的代碼(我正在使用Eclipse):Java Eclipse加密故障

  import java.util.Scanner; 

     public class Encryption 
     { 
      public static String message = ""; 
      public static boolean hasMessage = false; 
      public static boolean encrypted = false; 
      static char a = 0; 
      static char b; 
      static int w; 
      static int x; 
      static int y; 
      static int z; 
     static int i; 


      public static void display() 
      { 
       System.out.println("Message: " + message + "\n"); 
      } 

      public static void encrypt(String word) 
      { 
       if(!hasMessage) 
       { 
        System.out.println("No message"); 
        // Tell the user there is no message 
       } 
       else if(encrypted) 
       { 
        System.out.println("Message is already encrypted"); 
        // Tell the user the message is already encrypted 
       } 

       else 
       { 

        // Reset the message to blank 
      for (int i = 0; i < message.length(); i++) { 
       i = j; 
       ``char a = message.charAt(i); 
      for (int j=0; j==message.length(); j++) 
      { 
       int w = (int) a * 2; 
       int x = (int) w + 2; 
       char y = (char) x; 
      } 
      } 
    } 

= 

        //get char from each letter (increase char each time), cast as int 


       } 
       System.out.println(message); 
       encrypted = true; 

       // Using the parameter word, modify message 
       // to contain a new value following a predictable pattern 
       // Hint: alter each character's ASCII value by casting 
       //  to an integer and using math operators 

       // Display the new message 
       // Set encrypted to true 


      } 

      public static void decrypt(String word) 
      { 
       if(!hasMessage) 
       { 
        System.out.println("No message"); 
        // Tell the user there is no message 
       } 
       else if(!encrypted) 
       { 
        System.out.println("Message not encrypted"); 
        // Tell the user the message is not encrypted 

       } 
       else 
       { 
        int a = (int) w/2; 
        int w = (int) x - 2; 
        char x = (char) y; 
        System.out.println(message); 
        // Like encrypt, but in reverse 
       } 

      } 

      public static void main(String[] args) 
      { 
       Scanner sc = new Scanner(System.in); 
       int menuChoice = 0; 

       while(menuChoice != 4) 
       { 
        System.out.println("[1] Enter Word\n" + 
          "[2] Encrypt\n" + 
          "[3] Decrypt\n" + 
          "[4] Quit\n"); 

        menuChoice = sc.nextInt(); 

        if(menuChoice == 1) 
        { 
         System.out.println("Input message"); 
         message = sc.next(); 
         // prompt user to input message 
         // assign next word to the class-level variable message 
         hasMessage = true; 
         encrypted = false; 
         // set hasMessage to true 
         // set encrypted to false 

        } 
        else if(menuChoice == 2) 
        { 
         encrypt(message); 
        } 
        else if(menuChoice == 3) 
        { 
         decrypt(message); 
        } 
       } 
      } 
     } 
+2

有一些嚴重的問題,這個for循環:'爲(message.charAt(一); a == message.length(); a ++)' – irrelephant

+0

真正的問題是您正在嘗試編寫自己的加密算法。別。使用已經編寫和測試的現有算法。除非你是一名真正的密碼學專家,否則你將創建一個弱(易破)的算法,並且「對我的目的來說足夠好」永遠不會。請參閱http://stackoverflow.com/q/20227/17300 –

回答

0

可能來自for循環的問題。我真的不知道這個for循環應該做什麼,所以我不能幫你改變它。

for (message.charAt(a); a==message.length(); a++) 
     { 
      int w = (int) a * 2; 
      int x = (int) w + 2; 
      char y = (char) x; 
     } 

這確實在僞什麼:

  1. 詢問字符在0字符串,什麼也不做。這只是浪費時間,所以我不知道這究竟是什麼。
  2. 檢查消息是否爲空,如果是的話繼續循環。
  3. 執行此循環中的代碼。

我猜你想要做的就是通過串字符環路成炭這樣的:

for (int i = 0; i < message.length(); i++) { 
    char a = message.charAt(i); 
}