Прокомментировать код - 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 += }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д