2013-03-04 3 views
-1

간단한 대체 암호를 만들려고 시도했지만 내 프로그램은 제대로 작동하지만 숫자를 암호화하거나 해독하지 않습니다. 난 정말 내 코드에 추가해야 그래서 그것이 제대로 작동하는지 모르겠다 ... 어떤 아이디어 ??? 이 명시 적으로 만 대문자와 소문자를 암호화 할 말을하는지 지금까지 내가 말할 수있는 내 코드간단한 대체 암호를 사용하여 암호화 및 암호 해독

namespace yaba 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void btnEncrypt_Click(object sender, EventArgs e) 
     { 
      string encrypt = tboxIO.Text; 
      encrypt.ToLower(); 


      bool tbNull = tboxIO.Text == ""; 

      if (tbNull) 
       MessageBox.Show("There is nothing to encrypt."); 

      else 
      { 
       char[] array = encrypt.ToCharArray(); 

       for (int i = 0; i < array.Length; i++) 
       { 
        int num = (int)array[i]; 
        if (num >= 'a' && num <= 'z') 
        { 
         num += Convert.ToInt32(tbShift.Text); 
         if (num > 'z') 
         { 
          num = num - 26; 
         } 
        } 
        else if (num >= 'A' && num <= 'Z') 
        { 
         num += Convert.ToInt32(tbShift.Text); 
         if (num > 'Z') 
         { 
          num = num - 26; 
         } 
        } 
        array[i] = (char)num; 
       } 
       lblIO.Text = "Encrypted Message"; 
       tboxIO.Text = new string(array).ToLower(); 
      } 

      tboxIO.Copy(); 
     } 

     private void btnDecrypt_Click(object sender, EventArgs e) 
     { 
      string decrypt = tboxIO.Text; 
      decrypt.ToLower(); 

      bool tbNull = tboxIO.Text == ""; 

      if (tbNull) 
       MessageBox.Show("There is nothing to decrypt."); 

      else 
      { 
       char[] array = decrypt.ToCharArray(); 
       for (int i = 0; i < array.Length; i++) 
       { 
        int num = (int)array[i]; 
        if (num >= 'a' && num <= 'z') 
        { 
         num -= Convert.ToInt32(tbShift.Text); 
         if (num > 'z') 
          num = num - 26; 

         if (num < 'a') 
          num = num + 26; 
        } 
        else if (num >= 'A' && num <= 'Z') 
        { 
         num -= Convert.ToInt32(tbShift.Text); 
         if (num > 'Z') 
          num = num - 26; 

         if (num < 'A') 
          num = num + 26; 
        } 
        array[i] = (char)num; 
       } 
       lblIO.Text = "Decrypted Message"; 
       tboxIO.Text = new string(array).ToUpper(); 
      } 

      tboxIO.Copy(); 
     } 

     private void pictureBox1_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("hehe"); 
     } 

     private void tboxIO_MouseClick(object sender, MouseEventArgs e) 
     { 
      tboxIO.SelectAll(); 
      tboxIO.Copy(); 
     } 

     private void tbShift_MouseClick(object sender, MouseEventArgs e) 
     { 
      tbShift.SelectAll(); 
     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 


    } 
} 

답변

1

글쎄, 어떤 논리로 합니까 번호를 암호화하고 싶습니까? 그들은 또한 Convert.ToInt32(tbShift.Text) 번 이동해야합니까? 그런 다음 else if(num >= '0' && num <= '9')과 함께 추가하고 같은 작업을 수행 할 수 있습니다 (+/- 26 대신 +/- 10).

이동하려는 정도에 따라 2 ~ 3 회 정도 이동할 수도 있습니다. 그리고 난 당신이 어떻게 든 tbShift.Text 만 (!) (26)

보다 높은 숫자를 가질 수 있는지 확인했다 희망하지만 당신이 필요는 암호화/숫자를 해독하고 우리에게 이야기하는 방법을 알고, 그래서 우리는 심지어 기회가 너를 돕는 것.

0

, 그래서 아니, 번호는 암호화되지 않습니다.

ToLower가 함수이기 때문에 ToLower에 대한 호출이 승무원이 아니며 아무 결과도 지정하지 않습니다.

1

이렇게 코드를 변경했습니다. ToLower는 사용하지 않아야합니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     string myText = "MusLum"; 
     string encrypted = ""; 
     string decrypted = ""; 
     char shift = 'a'; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Encrypt_Click(object sender, EventArgs e) 
     { 
      string encrypt = myText; 

      bool tbNull = myText == ""; 

      if (tbNull) 
       MessageBox.Show("There is nothing to encrypt."); 

      else 
      { 
       char[] array = encrypt.ToCharArray(); 

       for (int i = 0; i < array.Length; i++) 
       { 
        int num = (int)array[i]; 
        if (num >= 'a' && num <= 'z') 
        { 

         num += (Convert.ToInt32(shift.ToString().ToLower()[0]) - Convert.ToInt32('a')+1); 

         if (num > 'z') 
         { 
          num = num - 26; 
         } 
        } 
        else if (num >= 'A' && num <= 'Z') 
        { 
         num += (Convert.ToInt32(shift.ToString().ToUpper()[0]) - Convert.ToInt32('A')+1); 

         if (num > 'Z') 
         { 
          num = num - 26; 
         } 
        } 
        array[i] = (char)num; 
       } 

       encrypted = new string(array); 
      } 


     } 

     private void Decrypt_Click(object sender, EventArgs e) 
     { 
      string decrypt = encrypted; 


      bool tbNull = encrypted == ""; 

      if (tbNull) 
       MessageBox.Show("There is nothing to decrypt."); 

      else 
      { 
       char[] array = encrypted.ToCharArray(); 
       for (int i = 0; i < array.Length; i++) 
       { 
        int num = (int)array[i]; 
        if (num >= 'a' && num <= 'z') 
        { 
         num -= (Convert.ToInt32(shift.ToString().ToLower()[0]) - Convert.ToInt32('a')+1); 

         if (num > 'z') 
          num = num - 26; 

         if (num < 'a') 
          num = num + 26; 
        } 
        else if (num >= 'A' && num <= 'Z') 
        { 
         num -= (Convert.ToInt32(shift.ToString().ToUpper()[0]) - Convert.ToInt32('A')+1); 

         if (num > 'Z') 
          num = num - 26; 

         if (num < 'A') 
          num = num + 26; 
        } 
        array[i] = (char)num; 
       } 

       decrypted = new string(array); 
      } 
     } 
    } 
}