Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.02.2012
Сообщений: 27
1

Какой метод шифрования использовался в программе

16.05.2012, 21:49. Показов 915. Ответов 1
Метки нет (Все метки)

Подскажите пожалуйста,с помощью какого принципа\метода используется кодирование в этой программе?
Шифратор
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
 
namespace ConsoleApplication23
{
    class Program
    {
        static void Main(string[] args)
        {
            string kluch = ""; //резервируем адрес для ключевого выражения
            if (File.Exists("Input.txt") == false)
            {
                Console.WriteLine("ОТСУТСТВУЕТ ФАЙЛ Input.txt");
                return;
            }
            FileStream inp = new FileStream("Input.txt", FileMode.Open);
            FileStream outf = new FileStream("Output.txt", FileMode.Create);
            Console.WriteLine("ВВЕДИТЕ КЛЮЧ (БЕЗ ПРОБЕЛОВ)");
            kluch = Console.ReadLine();
            int n = kluch.Length; //длина ключа
            int b = 0, j = 0, i = 0;
            for (int k = 0; k < n; k++)
            {         //преобразование символов ключа в прописные
                b = (int)Encoding.ASCII.GetBytes(kluch[k].ToString())[0];
                if (b <= -33 && b >= -64) b += 32;   //A->а,Б->б,...(русский алфавит)
                if (b == -81 || b == -88 || b == -86) b += 16; //Ї->ї,Є->є,Ё->ё
                if (b <= 90 && b >= 65) b += 32;    //A->a, B->b,...(английский )
                kluch.Remove(k, 1);
                kluch.Insert(k, Encoding.ASCII.GetChars(new byte[] { (byte)b })[0].ToString());
 
            }
            char temp = ' ', buffer = ' ';//buffer-считываемый символ, temp- преобразов. символ
 
            byte[] buf = new byte[(int)inp.Length]; 
            inp.Read(buf, 0, (int)inp.Length);  //Читаем файл
            for (int x = 0; x < buf.Length; x++)
            {
                byte[] s = new byte[] { buf[x] };
                buffer = Encoding.Default.GetChars(s)[0];
 
                b = Encoding.Default.GetBytes(new char[] { buffer })[0];
                if (b >= -32 && b <= -1) b -= 32;  //а->А,б->Б,...(русский алфавит)
                if (b == -65 || b == -72 || b == -70) b -= 16; //ї->Ї,є->Є,ё->Ё
                if (b >= 97 && b <= 122) b -= 32;  //a->A, b->B,...(английский )
                buffer = Encoding.Default.GetChars(new byte[] { (byte)b })[0];
 
                j = i % n;// переменная j циклически изменяется от 0 до n-1
 
                int k1 = (int)Encoding.Default.GetBytes(new char[] { buffer })[0];
                int k2 = (int)Encoding.Default.GetBytes(new char[] { kluch[j] })[0];
                int k3 = k1 ^ k2; // применяем операцию "исключающее ИЛИ"
 
                temp = Encoding.Default.GetChars(new byte[] { (byte)k3 })[0];
               
                char[] ch = new char[1] { temp };
 
                outf.Write(Encoding.Default.GetBytes(ch), 0, ch.Length);//записываем кодированный символ
                i++;//переходим к следующему символу ключевого слова
                buffer = ' ';
            }
            inp.Close();
            outf.Close();
            Console.WriteLine("ЗАШИФРОВАННЫЙ ТЕКСТ НАХОДИТСЯ В ФАЙЛЕ Output.txt");
            Console.ReadLine();
          
        }
    }
}
Дешифратор
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
 
namespace ConsoleApplication24
{
    class Program
    {
        static void Main(string[] args)
        {
            string kluch = "";
            if (File.Exists("Output.txt") == false)
            {
                Console.WriteLine("ОТСУТСТВУЕТ ФАЙЛ Output.txt");
                return;
            }
            FileStream inp = new FileStream("Output.txt", FileMode.Open);
            FileStream outf = new FileStream("Desifr.txt", FileMode.Create);
            Console.WriteLine("ВВЕДИТЕ КЛЮЧ (БЕЗ ПРОБЕЛОВ)");
            kluch = Console.ReadLine();
 
            int n = kluch.Length;
            int b = 0, j = 0, i = 0;
 
            for (int k = 0; k < n; k++)
            {         //преобразование символов ключа в прописные
                b = kluch[k];
                if (b <= -33 && b >= -64) b += 32;   //A->а,Б->б,...(русский алфавит)
                if (b == -81 || b == -88 || b == -86) b += 16; //Ї->ї,Є->є,Ё->ё
                if (b <= 90 && b >= 65) b += 32;    //A->a, B->b,...(английский )
                kluch.Remove(k, 1);
                kluch.Insert(k, Encoding.Default.GetChars(new byte[] { (byte)b })[0].ToString());
 
            }
            char temp = ' ', buffer = ' ';
            byte[] buf = new byte[(int)inp.Length];
            inp.Read(buf, 0, (int)inp.Length); 
            for (int x = 0; x < buf.Length; x++)
            {
                j = i % n;
                buffer = Encoding.Default.GetChars(new byte[] { buf[x] })[0];
            
                int k1 = (int)Encoding.Default.GetBytes(new char[] { buffer })[0];
                int k2 = (int)Encoding.Default.GetBytes(new char[] { kluch[j] })[0];
                int k3 = k1 ^ k2;
 
                temp = Encoding.Default.GetChars(new byte[] { (byte)k3 })[0];
                char[] ch = new char[1] { temp };
 
                outf.Write(Encoding.Default.GetBytes(ch), 0, ch.Length);
 
                i++;
                buffer = ' ';
            }
 
            inp.Close();
            outf.Close();
            Console.WriteLine("ДЕШИФРОВАННЫЙ ТЕКСТ НАХОДИТСЯ В ФАЙЛЕ Desifr.txt");
            Console.ReadLine();
        }
    }
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2012, 21:49
Ответы с готовыми решениями:

Подскажите какой-нибудь метод шифрования и дефрования
Всем доброго времени суток!! Народ подскажите какой нибудь метод шифрования и дефрования, что бы...

Какой плагин или какой инструмент использовался?
Приветствую всех! Как считаете, чем создавалось? Какие есть инструменты, чтобы самостоятельно...

Как определить какой ListView использовался последним
Проблемка такого рода у меня есть 2 List View кнопка копировать мне нужно определить из какого...

Не могу разобрать какой метод нужно применить к дешифровке сообщения и как его реализовывать в программе
При зашифровывании исходного сообщения каждую его букву заняли одной либо двумя цифрами, причем...

1
265 / 255 / 43
Регистрация: 18.03.2012
Сообщений: 506
17.05.2012, 02:21 2
Боюсь, я не разберусь с вашим кодом, но по некоторым тестам и беглому взгляду по строкам, смею утверждать что это шифр Виженера с побитовым XOR-ом ASCII кодов символов вместо сложения.
Кстати, в дешифраторе нет никакого смысла, это просто шифрование зашифрованного текста.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2012, 02:21

Перевод char в string в программе шифрования
зделал прогарамку дляшыфрования полиномиальным шыфром но с выводом даных проблема как я не мучал...

Исправить ошибки в программе шифрования слова
Program esep; uses crt; var s_out,a,alf,san,k:string; i,j,t,l,s,p:integer; Begin ClrScr; ...

На какой алгоритм шифрования похоже?
Есть пары 2х байтовых значений: 00 01 - FD 9A 00 02 - 7D 9A 00 03 - FD 99 00 FF - FD 1B FF...

Подскажите какой алгоритм шифрования
Добрый день, отловил одного гадкого зверька и выловил ключ: +OWhQG7S7FM= Прошу профессионалов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru