Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 15:32   #1
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию Генерация закрытого ключа в RSA

Всем привет.
Занялся реализацией шифрования RSA, но тут же появилась проблема. Что бы найти закрытый ключ d в источниках сказано применять расширенный алгоритм Евклида. Т.е. нам надо найти НОД(e, phi(n)), где е - это открытая экспонента, а фи - функция Эйлера(если кто не знал).
А проблема в следующем: алгортим работает, но на первом же тестовом примере(брал с википедии) d у меня получилась отрицательная.
Что делать?
artem611 вне форума Ответить с цитированием
Старый 28.03.2012, 16:14   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

собственно вы взяли слишком больше числа на p и q... после чего произошло переполнение типа и выползли отрицательные значения... уменьшите диапазон p и q...
+ чую что возникнут у вас проблемы с шифрованием... так же весьма большие цифры... в свое время колдовал с этим...

вот как я вычислял d в своей программе... учтены конечно не все результаты... но выдает верные значения...
Код:
  //***** вычисление d
  boolean flag;
  flag=true;
  int pn=(p-1)*(q-1);
  while (flag==true)
  {
        d=mas[rand()%10+20];
        if (( d%pn != 0 ) && ( pn%d !=0 ))
          flag=false;
  }
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 28.03.2012 в 16:54.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.03.2012, 16:48   #3
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от VIK_aka_TOR Посмотреть сообщение
собственно вы взяли слишком больше числа на p и q... после чего произошло переполнение типа и выползли отрицательные значения... уменьшите диапазон p и q...
+ чую что возникнут у вас проблемы с шифрованием... так же весьма большие цифры... в свое время колдовал с этим...

вот как я вычислял d в своей программе... учтены конечно не все результаты... но выдает верные значения...
Код:
  //***** вычисление d
  boolean flag;
  flag=true;
  int pn=(p-1)*(q-1);
  while (flag==true)
  {
        d=mas[rand()%10+20];
        if (( d%pn != 0 ) && ( pn%d !=0 ))
          flag=false;
  }
Спасибо за Ваш код. Попробую его. Но дело все в том, что числа p и q предполагаются большими. За счет этого как раз и достигается криптостойкость алгоритма.
artem611 вне форума Ответить с цитированием
Старый 28.03.2012, 16:54   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

помню, кто-то на форуме разбирался с этим самым алгоритмом.
и помню разобрался. И ссылки полезные давал. но вот найти я не смог

посмотрите, вот может эта ссылочка Вам прояснит что-то - RSA для программиста

p.s. я сам "плаваю" в этих вопросах...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.03.2012, 16:57   #5
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

Цитата:
Сообщение от artem611 Посмотреть сообщение
Спасибо за Ваш код. Попробую его. Но дело все в том, что числа p и q предполагаются большими. За счет этого как раз и достигается криптостойкость алгоритма.
так то оно да... у меня они в диапазое от 100 до 1000 примерно... в mas содержатся простые числа... ну... если хотите оперировать с ольшими числами тогда длинная арифметика вам в помощь... или же ограничиться значениями из диапазона допустимых типами... собственно в архиве моя реализация RSA на Builder С++...
p.s. он работает с русским алфавитом...
p.s.s пересобрал проект... должно запуститься сейчас...
Вложения
Тип файла: rar RSA.rar (196.8 Кб, 91 просмотров)
пишу код не только за печеньки

Последний раз редактировалось VIK_aka_TOR; 28.03.2012 в 17:56.
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.03.2012, 17:24   #6
artem611
Пользователь
 
Регистрация: 21.09.2010
Сообщений: 40
По умолчанию

Спасибо за Вашу программу, Вик. Постараюсь в ней разобраться.(с С++ я не очень дружу)
По поводу больших чисел. Да, действительно, мне нужна длинная арифметика и я ей пользуюсь(заставили написать самому, хотя в Java есть встроенный класс BigInteger).

UPD: Ваша программа не запускается. Говорит, что нет vcl60.bpt. Попробую пока вашу реализацию, написанную выше. Может она будет достойно работать)

Последний раз редактировалось artem611; 28.03.2012 в 17:31.
artem611 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
генерация простых чисел для RSA Coraline Помощь студентам 1 16.05.2011 14:49
генерация простого числа для ключа в RSA Coraline Общие вопросы C/C++ 0 16.05.2011 14:30
Генерация сеансового ключа по Диффи-Хеллману(с++) klim26 Фриланс 2 20.04.2009 15:25
Экспорт данных из закрытого файла КаМММ Microsoft Office Excel 6 06.10.2008 07:47
Ссылка на ячейку закрытого файла tat-besidovska Microsoft Office Excel 1 18.01.2008 11:38