Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Большие числа для RSA [D6, Win95/98, WinME, WinXP]


Dark Elf ©   (2002-06-11 12:25:00) 

Народ, мне для криптосистемы RSA нужны ОЧЕНЬ БОЛЬШИЕ ЦЕЛЫЕЧИСЛА - порядка 10 в степени 4000, чтобы эта криптосистема могла нормально шифровать. Скажите народ, как привести числа типа EXTENDED(другой не подойдет) к такому типу (типа Int64, но с большими числами (-10^4000...+10^4000)), чтобы с ним можно было проводить операции div, mod- это нужно для генерации ключа в RSA, или как определить свой тип такого типа. Заранее благодарен - желающим могу выслать программу и исходник - все равно собираюсь ее с исходником выкладывать.


Slinker   (2002-06-13 17:43:00) [1]

Кстати Skyle, такая функция перегрузки оператора будет работать в несколько раз медленнее, чем с const"ами.

Впрочем, насколько я понял, скорость не обязательна => так оно как раз попроще будет тогда.


Slinker   (2002-06-13 17:28:00) [2]

Кстати, чем не нравится реализация на Algolist"е ?


Вячеслав   (2002-06-11 14:33:00) [3]

http://triade.studentenweb.org/GInt/gint.html


Skyle   (2002-06-11 13:54:00) [4]

Ну да....либо так, либо чисто по-русски %)
Например "перегрузка" (так точнее) операторов для работы с векторами выглядела у меня в своё время примерно так
function Plus (A,B:Vector):Vector;
%)
И никто не напрягался...%) А на С++ это выглядит всё-таки гораздо лучше (ИМХО)...
В данном случае дело просто в названиях...%)


MBo   (2002-06-11 13:45:00) [5]

Дык нету перегрузки операторов в Object Pascal.
Придется делать
function SuperIntAdd(i1,i2:SuperInt):SuperInt;
:)


Skyle   (2002-06-11 13:05:00) [6]


> >1) Перегрузи +
> Уши С++ торчат ;)

Есть маленько...%) А что, плохо чтоли? %))))


MBo   (2002-06-11 12:50:00) [7]

>1) Перегрузи +
Уши С++ торчат ;)


Skyle   (2002-06-11 12:47:00) [8]

Пока я писал, тут уже ссылочку воткнули %)))
Кстати, реально, очень беспантовая и гиморная реализация %)))


Skyle   (2002-06-11 12:44:00) [9]

См. ответ на вопрос про округление числа, там тебе помогут ...%)
А если серьёзно... Задавай числа в строковом виде (до 10^2147483648 можно догнать %))) Потом:
1) Перегрузи +
2) Перегрузи *
3) Задай x^-1
4) Задай -x
И будет тебе счастье %)))
Полный код писать не буду, сам понимаешь почему...:)
По идее, общий вид реализации понятен, то есть
1) Пусть a := "1234"; b := "567", и var A,B:MyType;
Заведи функцию, которая будет делать примерно так...
Переворачивать строки, а потом складывать по правилу:
var Value, InMind:Byte;
.......
Value := (ord(A[i])+ord[B[i])) mod 10;
C[i] := Value+InMind;
InMind :=(ord(A[i])+ord[B[i])) div 10
и т.д....%)))
А для того, чтобы перегрузить операции DIV и MOD тебе этого хватит...
Примерно так....дальше сам думай... работающий вариант проги у меня есть, а вот исходники померли в недрах борьбы с вирусами ...:(( Но тут ничего особо сложного нету, так что сам поди догадаешься :)))
Если что, пиши на мыло Skyle@ngs.ru


AFROLOV   (2002-06-11 12:38:00) [10]

http://algolist.manual.ru/maths/longnum.php- но учти что более х..ю реализацию трудно найти


Наверх

Титульная страница Поиск, карта сайта Написать письмо