Прокомментировать код - C# (192624)
Формулировка задачи:
Помогите, нужно прокомментировать. Прога шифрует и расшифровывает по принципу Цезаря и Вижинера. И еще 2 вопроса. Как прога понимает что текст кончился и ключ нужно применить заново. и второй вопрос. Прога когда шифрует Вижинером ответ появляется заглавными буквами. как исправить?
Главная форма:
Метод Цезаря
Метод Вижинера
using System;
using System.Windows.Forms;
namespace ProgrammLab3
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private string _decryptedString = "";
private string _encryptedString = "";
private string _keyword = "";
private short _shift;
private void uiStartButton_Click(object sender, EventArgs e)
{
_decryptedString = uiDecryptedStringTextBox.Text;
_encryptedString = uiEncryptedStringTextBox.Text;
if (uiCezarMethodRadioButton.Checked)
{
_shift = Convert.ToInt16(uiKeyTextBox.Text);
}
else
{
_keyword = uiKeyTextBox.Text;
}
if (uiCezarMethodRadioButton.Checked)
{
if (uiEncryptedTypeRadioButton.Checked)
{
_encryptedString = Caesar.Encrypt(_decryptedString, _shift);
}
else
{
_decryptedString = Caesar.Decrypt(_encryptedString, _shift);
}
}
else
{
if (uiEncryptedTypeRadioButton.Checked)
{
_encryptedString = Vegenere.Encrypt(_decryptedString, _keyword);
}
else
{
_decryptedString = Vegenere.Decrypt(_encryptedString, _keyword);
}
}
uiEncryptedStringTextBox.Text = _encryptedString;
uiDecryptedStringTextBox.Text = _decryptedString;
}
private void uiAlphabetButton_Click(object sender, EventArgs e)
{
var matrix = Vegenere.GetMatrix();
var text = "";
foreach (var s in matrix)
{
text += s;
text += "\n\r";
}
MessageBox.Show(text);
}
private void uiVizhinerMethodRadioButton_CheckedChanged(object sender, EventArgs e)
{
uiKeyTextBox.Text = uiCezarMethodRadioButton.Checked ? "1" : "1";
}
private void uiDecryptedStringTextBox_TextChanged(object sender, EventArgs e)
{
}
private void MainForm_Load(object sender, EventArgs e)
{
}
}
}using System;
namespace ProgrammLab3
{
public class Caesar
{
private const String ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmonpqrstuvwxyz ";
public static String Encrypt(String encryptText, int shift)
{
return Crypt(encryptText, shift);
}
public static String Decrypt(String encryptText, int shift)
{
return Crypt(encryptText, -shift);
}
public static String Crypt(String encryptText, int shift)
{
String endString = "";
int encryptStringLength = encryptText.Length;
for (int i = 0; i < encryptStringLength; i++)
{
endString += CryptChar(encryptText.ToCharArray()[i], shift);
}
return endString;
}
public static String GetAlphabet()
{
return ALPHABET;
}
private static char CryptChar(char ch, int shift)
{
char endChar = ' ';
int alphabetsLength = ALPHABET.Length;
int j = ALPHABET.IndexOf(ch);
if (j != -1)
{
int temp = j + shift + alphabetsLength;
while (temp >= alphabetsLength)
{
temp -= alphabetsLength;
}
endChar = ALPHABET.ToCharArray()[temp];
}
return endChar;
}
public static int findCharPosition(char ch)
{
int positionNumber = 0;
for (int i = 0; i < ALPHABET.Length; i++)
{
if (ch == ALPHABET.ToCharArray()[i])
{
positionNumber = i;
break;
}
positionNumber = 0;
}
return positionNumber;
}
}
}using System;
namespace ProgrammLab3
{
public class Vegenere
{
private static string[] _matrix;
public static string[] GetMatrix()
{
setMatrix(Caesar.GetAlphabet());
return _matrix;
}
private static void setMatrix(String alphabet)
{
_matrix = new string[alphabet.Length];
for (int i = 0; i < alphabet.Length; i++)
{
for (int j = 0; j < alphabet.Length; j++)
{
_matrix[i] += alphabet.ToCharArray()[j];
}
alphabet = Caesar.Encrypt(alphabet, 1);
}
}
public static String translateMatrix(char[][] cha)
{
String str = "";
GetMatrix();
for (int i = 0; i < 52; i++)
{
for (int j = 0; j < 52; j++)
{
str += _matrix[i][j] + " ";
}
str += "\n";
}
return str;
}
private static char getCharInMatrix(int i, int j)
{
return _matrix[i].ToCharArray()[j];
}
public static String Encrypt(String encryptText, String keyWord)
{
_matrix = GetMatrix();
String endText = "";
for (int i = 0; i < encryptText.Length; i++)
{
endText += getCharInMatrix(Caesar.findCharPosition(encryptText.ToCharArray()[i])
, Caesar.findCharPosition(keyWord.ToCharArray()[i%keyWord.Length]) + 1);
}
return endText;
}
public static String Decrypt(String decryptText, String keyWord)
{
_matrix = GetMatrix();
String endText = "";
for (int i = 0; i < decryptText.Length; i++)
{
endText += getCharInMatrix(Caesar.findCharPosition(decryptText.ToCharArray()[i])
,
Caesar.GetAlphabet().Length -
Caesar.findCharPosition(keyWord.ToCharArray()[i%keyWord.Length]) - 1);
}
return endText;
}
}
}Решение задачи: «Прокомментировать код»
textual
Листинг программы
for (int i = 0; i < decryptText.Length; i++)
{
endText +=
}