close

Вход

Забыли?

вход по аккаунту

?

Лаба7.1

код для вставкиСкачать
Лабораторна робота №7
Тема: Авто-ключ
Лістинг
using
using
using
using
System;
System.Collections.Generic;
System.Linq;
System.Text;
namespace Авто_Ключ
{
class Program
{
static string alphabet = "йцукенгшщзхъфывапролджэячсмитьбю";
static string encryption(string text, string key)
{
string result = "";
string newKey = key + text.Remove(text.Length - key.Length);
int[] mas1 = new int[text.Length];
int[] mas2 = new int[newKey.Length];
for (int i = 0; i < text.Length; i++)
{
mas1[i] = alphabet.IndexOf(text[i]) + 1;
}
for (int i = 0; i < newKey.Length; i++)
{
mas2[i] = alphabet.IndexOf(newKey[i]) + 1;
}
int[] res1 = new int[mas1.Length];
int[] res2 = new int[mas1.Length];
for (int i = 0; i < text.Length; i++)
{
res1[i] = mas1[i] + mas2[i];
}
for (int i = 0; i < text.Length; i++)
{
if (res1[i] > alphabet.Length)
{ res2[i] = res1[i] - alphabet.Length; }
else
{
res2[i] = res1[i];
}
}
for (int i = 0; i < res2.Length; i++)
{
result += alphabet[res2[i] - 1];
}
return result;
}
static string decryption(string shifr, string key)
{
string result = "";
string autoKey = key;
int keysLength = 0; string s = "";
if (shifr.Length % key.Length == 0)
keysLength = shifr.Length / key.Length;
else
keysLength = shifr.Length / key.Length + 1;
for (int j = 0; j < keysLength; j++)
{
if (autoKey.Length > shifr.Length)
{
autoKey = autoKey.Remove(shifr.Length);
}
int[] mas1 = new int[autoKey.Length];
int[] mas2 = new int[autoKey.Length];
for (int i = 0; i < autoKey.Length; i++)
{
mas1[i] = alphabet.IndexOf(shifr[i]) + 1;
}
for (int i = 0; i < autoKey.Length; i++)
{
mas2[i] = alphabet.IndexOf(autoKey[i]) + 1;
}
int[] res1 = new int[mas1.Length];
int[] res2 = new int[mas1.Length];
for (int i = 0; i < autoKey.Length; i++)
{
res1[i] = mas1[i] - mas2[i];
}
for (int i = 0;
{
if (res1[i]
{ res2[i] =
else
{
res2[i]
}
}
i < autoKey.Length; i++)
< 0)
alphabet.Length + res1[i]; }
= res1[i];
for (int i = 0; i < res2.Length; i++)
{
s += alphabet[res2[i] - 1];
}
autoKey = s;
result += s;
s = "";
if (shifr.Length > autoKey.Length)
{
shifr = shifr.Remove(0, autoKey.Length);
}
}
return result;
}
static void Main(string[] args)
{
string text = "", shifr = "", key = "";
for (; ; )
{
Console.WriteLine("1. Шифрование");
Console.WriteLine("2. Дешифрование");
int choise = Convert.ToInt32(Console.ReadLine());
if (choise == 1)
{
Console.WriteLine("Введите текст:");
text = Console.ReadLine();
Console.WriteLine("Введите ключ: ");
key = Console.ReadLine();
shifr = encryption(text, key);
Console.WriteLine("Шифр: " + shifr);
}
if (choise == 2)
{
Console.WriteLine("Введите ключ: ");
key = Console.ReadLine();
Console.WriteLine("Ваше слово: " + decryption(shifr, key));
Console.ReadLine();
break;
}
}
}
}
}
Результати
Документ
Категория
Рефераты
Просмотров
16
Размер файла
43 Кб
Теги
лаба
1/--страниц
Пожаловаться на содержимое документа