![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Большие числа для 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- но учти что более х..ю реализацию трудно найти