Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
Заблокирован
1

Как поменять результат шифрование \ Метод шифрование RSA

21.02.2014, 15:38. Показов 6341. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Прошу помощи! В просторах интернета нашла одну статью в которой реализован метод шифрования RSA. Решила его опробовать, но хотелось бы кое что изменить, а именно чтобы шифрования происходило на латинице или кириллице. Как вы видите из скриншота шифруется слова непонятными иероглифами, не могу найти в коде от чего это зависит. Выручайте! Буду очень благодарна!

Как поменять результат шифрование \ Метод шифрование RSA


Отрывки кода для шифровки и дешифровки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static public byte[] Encryption(byte[] Data, RSAParameters RSAKey, bool DoOAEPPadding)
{
 try
 {
 byte[] encryptedData;
 using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
   {
    RSA.ImportParameters(RSAKey);            encryptedData = RSA.Encrypt(Data, DoOAEPPadding);    }   return encryptedData;
 }
 catch (CryptographicException e)
 {
 Console.WriteLine(e.Message);
 return null;
 }
}

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
static public byte[] Decryption(byte[]Data, RSAParameters RSAKey, bool DoOAEPPadding)
{
 try
 {
 byte[] decryptedData;
 using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
    {
     RSA.ImportParameters(RSAKey);
     decryptedData = RSA.Decrypt(Data, DoOAEPPadding);
    }
 return decryptedData;
 }
 catch (CryptographicException e)
 {
 Console.WriteLine(e.ToString());
 return null;
 }        
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2014, 15:38
Ответы с готовыми решениями:

Как использовать ключ RSA в AES шифрование?
Никак не могу сообразить как мне правильно сделать реализацию чтобы впихнуть ключ RSA 2048 в...

RSA-шифрование. Зависает при больших числах P и Q. Как исправить?
Есть программа на C#, которая шифрует текст методом RSA. Но преподаватель требует в качестве P и Q...

Rsa шифрование
Доброго времени суток, пытаюсь разобраться с шифрованием, пару ключей генерирует, открытым ключом...

Шифрование RSA
Стоит следующая задача - используя алгоритм RSA зашифровать входной файл. P и Q вводятся с...

20
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 16:54 2
Давайте начнем с того, что любая информация в компьютере кодируется совокупностью некоторых чисел.
То есть фраза "Hello! How are you", по большому счету, это последовательность чисел. Способ интерпретации этих чисел выбирает пользователь (ну или программист). То есть одни и те же данные можно воспринимать как число, как букву, как текст, как математическое выражение, как координаты, как массив контролов...
Ну так вот. Суть шифрования - обратимое преобразование этих данных.
То есть можно договориться, например, каждую букву заменять ее порядковым номером в алфавите.
Можно вспомнить, что кроме букв есть еще другие символы, составить таблицу всех символов и заменять каждую букву номером из этой таблицы.
Чтобы интерпретировать эти данные такая таблица должна быть у меня и, допустим, у моего коллеги, которому я эти данные передаю.
Можно договориться также перед передачей производить какие-либо математические действия с этими номерами, например, умножать на 2, чтобы чужие не смогли прочитать наши сообщения.
То есть для того, чтобы передать какой-то текст, я и мой коллега должны будем знать способ шифрования и то как данные интерпретировать.

Надеюсь я достаточно доходчиво объясняю XD
1
Заблокирован
21.02.2014, 17:03  [ТС] 3
xoraxax, знаю теоретические аспекты алгоритма шифрования... Вопрос был в другом! можете что-нибудь по делу предложить?!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 17:15 4
Похоже вы не совсем понимаете, как происходит хранение информации в памяти. Ну да ладно.
Давайте подробнее.
Вы на выходе получаете массив байт (диапазон 0-255).
При этом хотите, чтобы остались только числа, допустим, от 0 до 52. Что будем делать с остальными?
Совершенно не вижу смысла в вашей затее.

Добавлено через 4 минуты
А чтобы выглядело не так страшно, можно сделать, например, так:
C#
1
2
3
4
5
6
7
public static string ByteArrayToString(byte[] ba)
{
  StringBuilder hex = new StringBuilder(ba.Length * 2);
  foreach (byte b in ba)
    hex.AppendFormat("{0:x2}", b);
  return hex.ToString();
}
2
Заблокирован
21.02.2014, 17:25 5
xoraxax, По вашим словам изменить нельзя никак эти иероглифы?! Выглядит просто страшно, по мне! И куда вставить или заменить этот код ваш?!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 17:28 6
Это не иероглифы, это массив байт XD
Берете этот массив байт, отдаете его этой функции, она отдает вам строку, в которой будут записаны эти же байты в 16-ричной системе счисления. Её читать существенно удобнее, как правило.
0
Заблокирован
21.02.2014, 17:29  [ТС] 7
xoraxax, не могу понять, могли бы подробнее расписать, что этот код ваш делает и куда его поместить мною выше указанном коде?
0
Заблокирован
21.02.2014, 17:34 8
xoraxax, по мне так иероглифы! хD Дай напутствие новичкам как мы! а то я например даже не имею представления как это решить! =)

Добавлено через 1 минуту
altuwa, может тебе весь код лучше выложить для удобство?!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 17:35 9
Ну вы определитесь чего вы хотите для начала.
а вообще вот есть у вас метод
Encryption он принимает три параметра - массив байт, RSAParameters и булев, возвращает массив байт.
Вам надо добавить еще один метод, который принимает массив байт и возвращает строку (см в моем посте выше)
Потом откуда-нибудь этот метод вызвать и полученную строку как-нибудь показать пользователю.
0
Заблокирован
21.02.2014, 17:40  [ТС] 10
xoraxax, я новичок и много не знаю... сказывается малый опыт... и сама я вряд ли смогу реализовать это =(
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 17:51 11
Я вас верю, у вас все получится.
0
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,705
21.02.2014, 18:02 12
Цитата Сообщение от xoraxax Посмотреть сообщение
Давайте начнем с того, что любая информация в компьютере кодируется совокупностью некоторых чисел.
То есть фраза "Hello! How are you", по большому счету, это последовательность чисел. Способ интерпретации этих чисел выбирает пользователь (ну или программист). То есть одни и те же данные можно воспринимать как число, как букву, как текст, как математическое выражение, как координаты, как массив контролов...
Ну так вот. Суть шифрования - обратимое преобразование этих данных.
То есть можно договориться, например, каждую букву заменять ее порядковым номером в алфавите.
Можно вспомнить, что кроме букв есть еще другие символы, составить таблицу всех символов и заменять каждую букву номером из этой таблицы.
Чтобы интерпретировать эти данные такая таблица должна быть у меня и, допустим, у моего коллеги, которому я эти данные передаю.
Можно договориться также перед передачей производить какие-либо математические действия с этими номерами, например, умножать на 2, чтобы чужие не смогли прочитать наши сообщения.
То есть для того, чтобы передать какой-то текст, я и мой коллега должны будем знать способ шифрования и то как данные интерпретировать.
xoraxax, к чему вся эта теория ? где ответ по делу?
Суть в том, что весь текст представляется в виде набора байтов (зависит от кодировки) Допустим UTF-16.
Когда вы производите шифрование, все байты видоизменяются и после обратного перевода в текст текущая кодировка будет просто подбирать на место новых значений новые символы, если нет какого-то символа в таблице, то ставится заглушка (на вашем скрине они указаны в виде точек,вроде, точно не помню,Почитайте про кодировки). Ну а почему китайские иероглифы ( или хз какие они там), потому что алфавиты у стран востока самые большие.
Итог: эта суть шифрования и принципы кодирования текста. тут нечего менять!

Добавлено через 3 минуты
Обратно ведь нормально дешифруется. )
1
Заблокирован
21.02.2014, 18:12  [ТС] 13
IamRain, неужели все так плохо и никак нельзя сменить эти символы? я искала кодировки изначально, но не смогла найти, хотелось бы поменять на UTF-8 допустим. Какую кодировку надо взять и где ее поменять, чтобы не было символов подобных этому? Что мне надо сделать для этого? Вижу вы знающий человек, помогите пожалуйста! Выручайте
0
xoraxax
21.02.2014, 18:13
  #14

Не по теме:

IamRain, вы таки считаете, что ваш ответ более "по делу"? XD

0
3462 / 2473 / 695
Регистрация: 02.08.2011
Сообщений: 6,705
21.02.2014, 18:15 15
altuwa, я вам уже ответил.

Не по теме:

xoraxax, объективно, да)

0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
21.02.2014, 18:18 16
altuwa, нет, нельзя. Можно изменить представление с тесктового на байтовый (HEX), но сильно легче вам от этого не станет.
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
21.02.2014, 18:24 17
Цитата Сообщение от Psilon Посмотреть сообщение
но сильно легче вам от этого не станет
Ну это как посмотреть =) Несколько проще воспринимается 16ричная запись, нежели набор случайных символов.

Если речь была именно об этом, функцию я привел чуть выше. Вам осталось только вставить ее в свой код.
А если не об этом, то надо, все таки, определиться чего именно вы хотите.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
21.02.2014, 18:27 18
xoraxax, легче, не спорю. Но для ТСа, которая все равно не разбирается во внутреннем представлении данных, это все равно китайская грамота. Поэтому ключевое слово в той фразе - вам
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
22.02.2014, 00:49 19
Человек совсем не в теме. Под её задачи можно подменять одни символы другими, хотя бы тупо +1.
Криптостойкость никакая, но переписка уже будет защищена. А большее похоже и не надо.
altuwa, Все толковые алгоритмы сжатия, а тем более шифрования превращают текст в набор иероглифов. Попробуйте для примера открыть вордовский документ блокнотом очень удивитесь, но там такие же иероглифы. Получить неиерогливы сделать свой алгоритм, использующий для кодирования только символы кирилицы, латиницы и цифр, это вполне возможно. Но не надёжно, из за того что символов меньше.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
22.02.2014, 00:59 20
Driwars, да даже примитивный xor с ключем даст иероглифы, что уж тут говорить...
1
22.02.2014, 00:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2014, 00:59
Помогаю со студенческими работами здесь

RSA шифрование
Доброго времени суток, у меня возникла такая проблема, преподаватель дал задание: "написать свою...

RSA шифрование
Всем привет, вопрос такой. Будет 2 приложения. 1 шифрует 2 расшифровывает. Я создал пару ключей,...

Шифрование rsa
Всем доброго времени суток. Работаю с C# сравнительно не долго и, мягко говоря, в этом я так...

Шифрование по алгоритму RSA
Криптосистема шифрования данных RSA Не получается дешифрование. Что не так? Пара чисел (e,n) ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru