Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2013, 17:59   #1
Padshij_Angel
Новичок
Джуниор
 
Регистрация: 22.10.2012
Сообщений: 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)
        {
            str2 = System.Convert.ToString(textBox1);
            //char[] array = str.ToCharArray();
            //char[] array2 = str2.ToCharArray();
                for (int i = 0, k = 0; i < str.Length; i++)
                {
                    str = System.Convert.ToString((str[i] + str2[k]) % 256);
                    k++;
                    if (k > str2.Length)
                        k = 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++)
            {
            }
        }
    }
}
Не правильно шифрует, выдает число в место зашифрованного текста, помогите пожалуйста, не знаю в чем ошибка((
Padshij_Angel вне форума Ответить с цитированием
Старый 14.11.2013, 19:07   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Объясните вот эту строчку пожалуйста:
Код:
str2 = System.Convert.ToString(textBox1);
Зачем вы ее делаете??
Чтобы получить текст из данного контрола нужно сделать по другому:

Код:
str2 = textBox1.Text;

Второе:
Код:
str[i] + str2[k]
Это как по вашему должно работать то? Тут не С++, сложить эти переменные так просто не получится.

Вместо
Код:
System.Convert.ToString()
у всех объектов C# есть метод ToString() который существенно проще вызывать и результат аналогичный.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифрование двойной квадрат Уитстона ( нужен код на Delphi ) aikoni Помощь студентам 0 27.01.2013 13:38
Простое шифрование alex.snap Помощь студентам 17 02.11.2012 06:19
Простое шифрование пароля на assembler artemr Помощь студентам 1 30.05.2011 11:42
Штрих код + Шифрование BARNEY Общие вопросы Delphi 10 17.12.2009 15:00
Поиск с заменой! MAKEDON Общие вопросы C/C++ 1 15.04.2009 22:02