Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/172: Рейтинг темы: голосов - 172, средняя оценка - 4.62
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308

Алгоритм шифрования RSA

10.05.2011, 04:12. Показов 34580. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо реализовать программу, которая по заданному паролю шифрует данные и дешифрует оные вышеуказанным алгоритмом.
Вот мой код для шифрования:
C#
1
2
3
4
5
6
7
8
PasswordDeriveBytes key = new PasswordDeriveBytes( dataPassword, Encoding.ASCII.GetBytes( "alexander" ) );
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider( 384 );
rsa.FromXmlString( rsaInitString );
RSAParameters rsaParameters = new RSAParameters();
rsaParameters = rsa.ExportParameters( false );
rsaParameters.Modulus = key.GetBytes( 48 );
rsa.ImportParameters( rsaParameters );
data = rsa.Encrypt( data, false );
Вот мой код для дешифрации:
C#
1
2
3
4
5
6
7
8
PasswordDeriveBytes key = new PasswordDeriveBytes( dataPassword, Encoding.ASCII.GetBytes( "alexander" ) );
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider( 384 );
rsa.FromXmlString( rsaInitString );
RSAParameters rsaParameters = new RSAParameters();
rsaParameters = rsa.ExportParameters( false );
rsaParameters.Modulus = key.GetBytes( 48 );
rsa.ImportParameters( rsaParameters );
data = rsa.Decrypt( data, false );
dataPassword - переменная типа string, собственно пароль

rsaInitString - переменная типа string, полученная путём экспорта параметров из RSACryptoServiceProvider rsa = new RSACryptoServiceProvider( 384 ) и записанная в файл (т.е. при запуске программы, данная переменная считывается из файла)

data - переменная типа byte[], хранящая входные данные (шифруемые данные для шифрования и зашифрованные данные для дешифрации)

Шифрование проходит успешно. А при дешифрации выдаётся ошибка "Плохой ключ". Подскажите как избавиться от данной проблемы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2011, 04:12
Ответы с готовыми решениями:

алгоритм шифрования RSA, exception плохие данные
Здравствуйте. Столкнулся с проблемой при реализации алгоритма RSA. Класс RSACryptoServiceProvider позволяет зашифровать данные размером...

Реализация RSA шифрования
Саму реализацию взяла с MSDNusing System; using System.Security.Cryptography; using System.Text; class RSACSPSample { ...

Взаимодействие RSA шифрования между c# и php
Здравствуйте! Пытаюсь передавать данные от c# до php и обратно в зашифрованном виде, пока что-то не особо выходит. Вот на пример, тут...

13
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
10.05.2011, 14:39
Шифровать надо приватным ключом, расшифровывать - публичным. У вас rsaInitString, возможно, один и тот же ключ, хотя из кода не понятно.
0
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308
10.05.2011, 17:06  [ТС]
Цитата Сообщение от Delog Посмотреть сообщение
У вас rsaInitString, возможно, один и тот же ключ, хотя из кода не понятно.
да, это один и тот же ключ
Цитата Сообщение от Delog Посмотреть сообщение
Шифровать надо приватным ключом, расшифровывать - публичным.
а как это будет выглядеть в коде?
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
10.05.2011, 17:42
Извиняюсь, поторопился. Конечно же шифровать надо публичным, а не расшифровывать, иначе бы любой желающий мог расшифровать сообщение. Чуть позже напишу пример, сейчас нет возможности.
0
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308
10.05.2011, 17:45  [ТС]
спасибо, буду ждать
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
11.05.2011, 15:34
Лучший ответ Сообщение было отмечено как решение

Решение

Сначала создаем публичный и приватный ключи:
C#
1
2
3
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
File.WriteAllText("public.xml", rsa.ToXmlString(false));
File.WriteAllText("private.xml",rsa.ToXmlString(true));
Естественно ключи должны быть парными, т.е. созданными от одного объекта rsa.

Теперь передаем публичный ключ своему другу, хоть через форум у всех на виду. Ваш друг этим ключом шифрует сообщение:
C#
1
2
3
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(File.ReadAllText("public.xml"));
MySecret.Text = Convert.ToBase64String(rsa.Encrypt(Encoding.UTF8.GetBytes(MyMessage.Text), false));
Где MyMessage - это TextBox в котором ваш друг написал сообщение, а MySecrect - это TextBox в котором получится зашифрованное сообщение. Вообще шифрование происходит здесь: rsaCrypt.Encrypt, но поскольку этот метод возвращает зашифрованный массив байт, я, для наглядности, перевожу этот массив в текст Base64.

Вы получаете зашифрованное сообщение от друга и его сможет расшифровать только тот, кто имеет приватный ключ, парный публичному. Т.е. только вы:
C#
1
2
3
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(File.ReadAllText("private.xml"));
HisMessage.Text = Encoding.UTF8.GetString(rsa.Decrypt(Convert.FromBase64String(HisSecret.Text), false));
Где HisSecret - это TextBox с зашифрованным сообщением от друга, а HisMessage - это TextBox c его сообщением в расшифрованном виде. Здесь, опять же, расшифровка только здесь: rsa.Decrypt, все остальное только для того, чтобы массив байтов представить в виде текста.
9
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308
11.05.2011, 16:25  [ТС]
мне нужно формировать ключ из пароля (текстовой строки)
как это правильно сделать?
я пытаюсь устанавливать значения rsaParameters.Modulus, rsaParameters.D и rsaParameters.Exponent то у меня появляется ошибка "Плохой ключ" даже при шифровании
0
I ♥ C#
 Аватар для Delog
470 / 262 / 25
Регистрация: 07.05.2010
Сообщений: 567
11.05.2011, 18:01
Цитата Сообщение от M__A__K Посмотреть сообщение
мне нужно формировать ключ из пароля (текстовой строки)
Воспользуйтесь симметричным алгоритмом шифрования. У RSA другие цели.
0
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308
11.05.2011, 21:38  [ТС]
Цитата Сообщение от Delog Посмотреть сообщение
Воспользуйтесь симметричным алгоритмом шифрования. У RSA другие цели
это лабораторная работа. симметричные алгоритмы я уже сделал.
у RSAParameters довольно много полей. меня интересует следующий вопрос:
какие из них возможно сформировать вручную, чтобы получить адекватный RSAParameters, которым можно зашифровать (а потом расшифровать) данные?
0
 Аватар для Mortal_Hero
8 / 8 / 2
Регистрация: 20.11.2010
Сообщений: 42
16.05.2011, 05:24
Лучший ответ Сообщение было отмечено как решение

Решение

Была у меня подобная лабораторная работа, только надо было использовать не стандартные функции - а писать их самому. Поэтому, не факт, что подойдёт, но всё же...
Для нормальной работы надо ввести p и q взаимно простые, я не делал проверку на их взаимно простоту, не до этого было.
Вложения
Тип файла: rar RSA.rar (54.0 Кб, 2392 просмотров)
7
47 / 47 / 6
Регистрация: 09.11.2010
Сообщений: 308
16.05.2011, 13:37  [ТС]
я решил делать файл вместо пароля, препод захавал
всем спасибо

Mortal_Hero, спс, я посмотрю
0
 Аватар для KofeMNE
7 / 7 / 1
Регистрация: 27.08.2009
Сообщений: 99
10.04.2012, 15:20
Ребят, а можете объяснить как реализовать обмен между клиентом и сервером? Т.е. аутентификацию по другому. Соединение между сокетами можно не объяснять, а просто как данные передаются в безопасном виде. Например я хочу передать свой пароль через RSA клиенту, чтобы посторонние личности об этом не узнали.
0
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 5
21.12.2013, 15:06
Mortal_Hero, программа очень хороша, но возник такой вопрос... возможна работа только с латинскими буквами? при попытке шифровать русский текст выдает ошибку.(
0
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 17
13.01.2015, 17:50
DariaSm, здесь демонстрируется как шифровать/дешифровать строки по алгоритму RSA
http://www.youtube.com/watch?v=UMLDeliY0ng
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2015, 17:50
Помогаю со студенческими работами здесь

Алгоритм RSA
Кто чтото может сказать про алгоритм RSA? У ково есть сам алгоритм RSA? У ково есть хоть на какомто языке RSA? Пажалуста... Я вам...

RSA алгоритм
можете объяснить как правильно использовать сие алгоритм в C# с использование встроенных классов. если не сложно, объясните на примере...

Алгоритм слепой RSA подписи
Взял с википедии http://ru.wikipedia.org/wiki/%D1%EB%E5%EF%E0%FF_%EF%EE%E4%EF%E8%F1%FC Алиса выбирает случайным образом число из...

Ошибка деления на ноль. Алгоритм RSA
Есть в криптографии алгоритм RSA для получения ключей. Есть заготовка программы для реализации этого алгоритма. using System; using...

RSA алгоритм ошибка System.StackOverflowException
есть такой код, он для лаб. роб. немогу понять как решить проблему, в 12 стороке возникает System.StackOverflowException при вводе 1650....


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru