我想使用接口和类来实现Caesar和Vigenère加密方法。代码有效。它从textBox1.Text、textBox3.Text的值中读取并加密,但是不知道点击按钮时如何输出对textBox2.Text的响应。Vigenère 课程没有开始。请帮我整理一下)代码:
namespace Цезарь_и_Виженера
{
interface IEncrypt
{
void Encrypt(string text, string key); //зашифровать
void Decrypt(string text, string key); //расшифровать
string Text { get; set; } //текст
}
class Cipher
{
public IEncrypt Encrypter { get; set; }
public void Encrypt(string text, string key)
{
Encrypter.Encrypt(text, key);
}
public void Decrypt(string text, string key)
{
Encrypter.Decrypt(text, key);
}
}
class Caesar : IEncrypt
{
const string alfabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
public string Text { get; set; }
private void CodeEncode(string text, int key)
{
//добавляем в алфавит маленькие буквы
var fullAlfabet = alfabet + alfabet.ToLower();
var letterQty = fullAlfabet.Length;
var retVal = "";
for (int i = 0; i < text.Length; i++)
{
var c = text[i];
var index = fullAlfabet.IndexOf(c);
if (index < 0)
{
//если символ не найден, то добавляем его в неизменном виде
retVal += c.ToString();
}
else
{
var codeIndex = (letterQty + index + key) % letterQty;
retVal += fullAlfabet[codeIndex];
}
}
Text = retVal;
}
public void Encrypt(string text, string key)
{
CodeEncode(text, Convert.ToInt32(key));
}
public void Decrypt(string text, string key)
{
CodeEncode(text, -Convert.ToInt32(key));
}
}
}
public partial class Form1 : Form
{
Cipher cipher = new Cipher();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
cipher.Encrypter = new Caesar();
cipher.Encrypt(textBox1.Text, textBox3.Text);
textBox2.Text =
}
}
据我了解
Text = retVal;, retVal 是一个加密/解密的消息textBox2.Text = cipher.Encrypter.Text;