Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм шифрования RSA, оптимизировать 
:(
    Опции темы
1nsane
  Дата 25.12.2006, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Помогите пожалуйста оптимизировать функции, кот ишут ключи для RSA

Сразу скажу, работает только с небольшими числами...

//при вызове возвращает случайное значение в диапазоне 1..(k-1)
Код

function rand(k:integer):integer;
begin
Randomize;
result:=Random(k-1)+1;
end;



//возвращает случайное значение e<n и удовлетворяющее условию НОД(e,phi)=1
Код

function Gen_e(phi:integer;n:integer):integer;
var nod,e,e1:integer;
begin
e:=rand(n);
while (nod<>1) do
  begin
  e:=rand(n);
  e1:=e;
  while e1*phi<>0 do
    if e1>phi then e1:=e1 mod phi else phi:=phi mod e1;
  nod:=e1+phi;
  end;
result:=e;
end;


//находит такое значение d<phi при котором выполняется условие e*d mod phi=1
Код

function Poisk_d(e:integer;phi:integer):integer;
begin
d:=rand(phi);
while ((e*d) mod phi)<>1 do d:=rand(phi);
result:=d;
end;


Условия e<n и d<phi достигабтся с помощью функций rand(n) и rand(phi) соответственно

Выполнение данных функций частенько вызывает зависание программы(бесконечный цикл-CPU загружен на 100%). Знаю что, что-то с циклами а может проверкой НОД но исправить к сожалению не могу.  smile 

Кратко алгоритм можно описать следующим образом:
1. Выбираются два больших простых числа p и q. 
2. Вычисляется их произведение (открытая компонента ключа) n=p*q
3. Находится функция Эйлера по формуле phi=(p-1)(q-1)
4. Выбирается большое простое число e (e<n), такое что НОД(e,phi)=1, т.е. e является взаимно простым со значением phi.
5. Определяется число d, удовлетворяющее условию e*d mod phi=1
Два числа (e,n) – открытый ключ, (d,n) - закрытый.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0393 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.