Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 21.05.2015
Сообщений: 32

Написать программу, реализующую формирование цифровой подписи к сообщению

12.04.2016, 17:54. Показов 2272. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, реализующую формирование цифровой подписи к сообщению.
Программа должна выполнять следующие действия:
1. Отправитель обрабатывает исходное сообщение хеш-функцией MD5 (вкладка Indy).
2. Полученную 32-символьную последовательность (128-бит) представить в десятичных кодах ASCII и в соответствии с вариантом задания, создать хеш-образ этой последовательности.
3. Применить к полученному хеш-образу алгоритм RSA с использованием закрытого ключа (3, 33) и открытого ключа (7, 33). Полученное значение и будет являться цифровой подписью.
4. Сформировать файл для получателя содержащий: исходное сообщение и цифровую подпись.
Получатель принимаент сообщение, выделяет подпись и вычисляет хеш-функцию MD5 от исходного текста, затем составляет его хеш-образ в соответствии с вариантом задания и полученное значение обрабатывает по алгоритму RSA с использование открытого ключа.
Сделать выводы о подлинности сообщения.

Моя задача выполняет для https://www.cyberforum.ru/cgi-bin/latex.cgi?{{H}_{i}=({H}_{i-l}+{M}_{i}})^{2}mod , где Mi = каждый 5-й символ .

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
 
namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        char[] temp;
        int flag = 0;
        string password;
        int n = 33;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
 
            string hash = password=textBox3.Text;
            byte[] unicodeBytes = Encoding.Unicode.GetBytes(hash.ToString());
            byte[] asciiBytes = Encoding.Convert(Encoding.Unicode, Encoding.ASCII, unicodeBytes);
            Random klim = new Random();
            int k0 = klim.Next(1, 51);
            int[] k = new int[asciiBytes.Length / 5 + 1];
            k[0] = k0;
            int j = 0;
            for (int i = 1; i < k.Length; i++)
            {
                k[i] = (int)(Math.Pow((k[i - 1] + asciiBytes[j]), 2) % n);
                j += 5;
            }
            int s, H;
            s = (int)(Math.Pow(k[k.Length - 1], 3) % n);
            H = (int)(Math.Pow(s, 7) % n);
            if (H == k[k.Length - 1])
                label3.Text=(string.Format("Ваш текст: "{0}" является подлинным." + Environment.NewLine +
                    "Цифровая подпись: {1}.", textBox3.Text, H));
            else
                label3.Text = ("Видимо, что-то не верно.");
            
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            string password;
            System.Security.Cryptography.MD5CryptoServiceProvider 
                x = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] bs = System.Text.Encoding.UTF8.GetBytes(textBox3.ToString());
            byte[] gg = x.ComputeHash(bs);
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            foreach (byte b in gg)
            {
                s.Append(b.ToString("x2")/*.ToLower()*/);
            }
            password = s.ToString();
            textBox4.Text = password;
        }
    }
}
Нужно переделать для https://www.cyberforum.ru/cgi-bin/latex.cgi?{{H}_{i}=({H}_{i-l}+{M}_{i}})^{2}mod , где Mi = два символа через два.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2016, 17:54
Ответы с готовыми решениями:

Проверка на наличие цифровой подписи
Доброго времени суток! Пишу на C# программу и возникла проблема: надо проверить файл(ы) на наличие цифровой подписи. Есть ли у...

Получить дату цифровой подписи файла
Всем привет. Как в C# получить дату цифровой подписи файла? Что-то не могу понять.

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2016, 17:54
Помогаю со студенческими работами здесь

Реализация алгоритма цифровой подписи ECDSA на основе эллиптической кривой в форме Эдвардса
Всем добрый вечер, пишу диплом и нужна помощь: Надо программу C# для формирования и проверки цифровой подписи. Формирование ЦП ...

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

Алгоритм цифровой подписи
Создайте открытый и закрытый ключ при p=31, q=37. Используя алфавит из 44 символов (33 русские буквы, пробел и 10 цифр), зашифровать...

Определение цифровой подписи
Всем вечер добрый. Ребята не подскажите с помощью каких функций можно определить цифровую подпись файла, если можно с примером. Скажу...

Создание электронной цифровой подписи
Здравствуйте. Подскажите, пожалуйста, как реализовать создание и проверку электронной цифровой подписи для файлов с помощью алгоритма RSA и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru