Простое Шифрование Текста, C#

Atamanochka

New member
27.12.2011
1
0
#1
Задача состоит в следующем:
1)Считать текстовую информацию из файла
2) Зашифровать информацию
3) Сохранить в файл
Возникла проблема с шифрованием текста. Зашифровать нужно по этому алгоритму: Bi = (Ai+Ki) mod N
Где A – Текст
B – Зашифрованный текст
К – Ключ
i – номер символа в тексте
L – длина исходного текста и зашифрованного текста
m – длина ключа
N – Количество символов в алфавите.
Если m >= L, то
Bi = (Ai+Ki) mod N – шифрование
Если m < L, то
Ключ должен быть продублирован, расширен до длины L
Т.е. если длинны ключа не хватает на весь текст то он должен повторятся
Программа зацикливается, точнее зацикливается алгоритм шифрования, при загрузки файл успешно загружается а при нажатии на кнопку шифровать вылетает и пишет "Индекс за пределами массива". Я сначала со строками работала, потом преобразовала в массив символов, все равно ни чего не помогает, не знаю правильно ли, помогите пожалуйста)))
Вот моя программа:
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;
using System.IO;

namespace lab1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string str = ""; //Объявляем переменную, в которую будем записывать текст из файла
string str2 = ""; //переменная которой будет присваиваться ключ
//string str3 = "";
//открываем файл
private void button1_Click(object sender, EventArgs e)
{
if (File.Exists("text.txt"))
{
str = File.ReadAllText("text.txt");
}
else {
MessageBox.Show("Файл НЕ существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
//записсываем в файл
private void button2_Click(object sender, EventArgs e)
{
File.WriteAllText("text.txt", str);
}
//кодируем
private void button3_Click(object sender, EventArgs e)
{
char[] array = str.ToCharArray();
char[] array2 = str2.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
//str = str.ToString() + str2.ToString();
//str = System.Convert.ToString((str + str2) % 256);
array = System.Convert.ToChar((array + array2) % 256);
i=i+1;
//if (i > str2.Length)
if (i>array2.Length)
i = 0;
}
str = System.Convert.ToString(array);
}
//открываем файл
private void button4_Click(object sender, EventArgs e)
{
if (File.Exists("text.txt"))
{
str = File.ReadAllText("text.txt");
}
else
{
MessageBox.Show("Файл НЕ существует!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
//записываем в файл
private void button6_Click(object sender, EventArgs e)
{
File.WriteAllText("text.txt", str);
}
//дишифрование
private void button5_Click(object sender, EventArgs e)
{
for (int i = 0; i < str.Length; i++)
{
}
}
}
}
 

Вложения

  • 38.3 КБ Просмотры: 21