Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
3 / 3 / 0
Регистрация: 16.06.2015
Сообщений: 88

Как создать электронно-цифровую подпись на основе алгоритма RSA?

17.05.2016, 16:52. Показов 4894. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь создать цифровую подпись для файла на основе алгоритма RSA. Написал вот такую программу ,не конца конечно.Шифрую хэш сумму ,но проблема в том что она шифрует ASCii кодами.И она не выглядит как нормальная электронная подпись. Из-за этого не принимают лабу.Помогите пожалуйста разобраться как сделать подпись в нормальном виде
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Security.Cryptography;
 
namespace _55
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            FileInfo file = new FileInfo("11.txt");
        }
 
        public ulong foo(ulong a, ulong n, ulong d)
        {
 
            if (n == 1)
                return a % d;
            ulong z;
            ulong h;
            z = foo(a, n / 2, d);
            z = (z * z) % d;
            if (n % 2 == 1)
            {   
               z = (z * a) % d;
              
            }
            return (ulong)z;
        }
        public ulong faa(ulong a, ulong n, ulong d)
        {
 
            if (n == 1)
                return a % d;
            ulong z;
            z = faa(a, n / 2, d);
            z = (z * z) % d;
            if (n % 2 == 1) z = (z * a) % d;
            textBox9.Text += z + "|" + Environment.NewLine;
            return (ulong)z;
        }
        private void textBox2_TextChanged(object sender, EventArgs e)
        {
 
        } 
        private struct ExtendedEuclideanResult
        {
            public int u1;
            public int u2;
            public int gcd;
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Stream myStream;
            OpenFileDialog path = new OpenFileDialog();
            path.Filter = "Text(*.txt)|*.txt";
            if (path.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if ((myStream = path.OpenFile()) != null)
                {
                    string strfilename = path.FileName;
                }
            }
            const int on = 17;
            int ne,m;
            int d = 1;
            string pi = textBox1.Text;
               int  p = Convert.ToInt32(pi);
          
            string  qi = textBox2.Text;
               int q = Convert.ToInt32(qi);
               string str1, str2;
 
            ne = p*q;
            m = (p - 1) * (q - 1);
            textBox3.Text += "  " + ne +Environment.NewLine;
            textBox4.Text += "  " + m + Environment.NewLine;
            A:
            while (d < m)
            {
                if ((d * on) % m == 1)
                    break;
               d = d + 1;
            }
              if (d == m) goto A;
              textBox5.Text += "  " + d + Environment.NewLine;
            System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            string md5 = ComputeMD5Checksum(path.FileName);
            textBox6.Text += md5 + Environment.NewLine;
            byte[] arr = enc.GetBytes(textBox6.Text);
            
            foreach (byte value in arr)
            {
                ulong valconv = (ulong)value; //числ
                ulong econv = (ulong)on; //степ
                ulong neconv = (ulong)ne; //мод
               
                ulong k = foo(valconv,econv,neconv);
 
                textBox7.Text += k + "|" + Environment.NewLine;
            
            }
            byte[] bytes = new byte[arr.Length];
            Int32[] arre = GetDecArrayFromText(textBox7.Text);
            int j = 0;
            foreach (int valuer in arre)
            {
                
                ulong valconv = (ulong)valuer; //числ
                ulong dconv = (ulong)d; //степ
                ulong neconv = (ulong)ne; //мод
               
                ulong k = faa(valconv, dconv, neconv);
                byte f = (byte)k;
                bytes[j] = f;
                j++;
 
            }
 
            textBox8.Text += enc.GetString(bytes);
 
        }
    
       public string ComputeMD5Checksum(string path)
        {
            FileStream fs = File.OpenRead(path);
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] fileData = new byte[fs.Length];
                fs.Read(fileData, 0, (int)fs.Length);
                byte[] checkSum = md5.ComputeHash(fileData);
                string result = BitConverter.ToString(checkSum).Replace("-", String.Empty);
                return result;
            }
        }
        private Int32[] GetDecArrayFromText(string text)
        {
            int i = 0;
            foreach (char c in text)
            {
                if (c == '|')
                {
                    i++;
                }
            }
 
            Int32[] result = new Int32[i];
            i = 0;
 
            string tmp = "";
 
            foreach (char c in text)
            {
                if (c != '|')
                {
                    tmp += c;
                }
                else
                {
                    result[i] = Int32.Parse(tmp);
                    i++;
                    tmp = "";
                }
            }
 
            return result;
        }
 
         
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void label2_Click(object sender, EventArgs e)
        {
 
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void label4_Click(object sender, EventArgs e)
        {
 
        }
 
        private void textBox7_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void label7_Click(object sender, EventArgs e)
        {
 
        }
 
        private void label6_Click(object sender, EventArgs e)
        {
 
        }
 
        private void textBox6_TextChanged(object sender, EventArgs e)
        {
 
        }
 
    }
}
Миниатюры
Как создать электронно-цифровую подпись на основе алгоритма RSA?  
Вложения
Тип файла: rar Podpis.rar (266.3 Кб, 185 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2016, 16:52
Ответы с готовыми решениями:

Реализовать электронно-цифровую подпись для билета
Как правильно подписать электронный билет. Какие данные из билета и данные о пользователе нужно использовать при электронной подписи билета.

Организовать электронно-цифровую подпись внутренних документов компании
Здравствуйте. Сразу приношу свои извинения за то, что возможно тема не по адресу. Есть необходимость организовать электронно цифровую...

Электронно цифровая подпись RSA
Добрый вечер, у меня вопрос, объясните алгоритм Электронно цифровая подпись RSA. Везде посморел так и не понял: Пример. Исходные...

3
71 / 58 / 31
Регистрация: 05.09.2013
Сообщений: 666
18.05.2016, 11:03
Цитата Сообщение от Faust611 Посмотреть сообщение
нормальная электронная подпись
Это что должно быть?
0
91 / 90 / 37
Регистрация: 05.08.2011
Сообщений: 428
18.05.2016, 15:43
Faust611, Попробуйте поменять кодировку на 96 строке, и на других, если есть на Unicode или utf-16.
0
3 / 3 / 0
Регистрация: 16.06.2015
Сообщений: 88
18.05.2016, 18:59  [ТС]
halk0812, это в в шестнадцатеричной виде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.05.2016, 18:59
Помогаю со студенческими работами здесь

Реализовать цифровую подпись RSA
Здравствуйте. Пытаюсь реализовать цифровую подпись RSA. Работает на небольших числах, а на больших не работает. Результат работы...

Как создать цифровую подпись для Android Studio?
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Захотел я значит в Android Studio создать .apk файл в оно требует...

Как создать цифровую подпись для драйвера win 10x64?
Есть устройство usb от силикон, и программка CustomUSBDriverWizard для изменения имени устройства в инсталяторе драйвера к нему...

Как создать цифровую подпись создаваемому приложению, чтобы антивирус угомонился.
Сделал программу, да какую бы ни сделал. При запуске антивирь Каспер спрашивает доверяю ли я этой программе? Говорит: Запускается...

Как получить цифровую подпись
Вопрос состоит в том как получить цифровую подпись к аплету для получения доступа к файловой системе


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru