Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
ВнизБольшие числа для RSA Найти похожие ветки
← →
Dark Elf (2002-06-11 12:25) [0]Народ, мне для криптосистемы RSA нужны ОЧЕНЬ БОЛЬШИЕ ЦЕЛЫЕ ЧИСЛА - порядка 10 в степени 4000, чтобы эта криптосистема могла нормально шифровать. Скажите народ, как привести числа типа EXTENDED (другой не подойдет) к такому типу (типа Int64, но с большими числами (-10^4000...+10^4000)), чтобы с ним можно было проводить операции div, mod - это нужно для генерации ключа в RSA, или как определить свой тип такого типа. Заранее благодарен - желающим могу выслать программу и исходник - все равно собираюсь ее с исходником выкладывать.
← →
AFROLOV (2002-06-11 12:38) [1]http://algolist.manual.ru/maths/longnum.php - но учти что более х..ю реализацию трудно найти
← →
Skyle (2002-06-11 12:44) [2]См. ответ на вопрос про округление числа, там тебе помогут ...%)
А если серьёзно... Задавай числа в строковом виде (до 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
← →
Skyle (2002-06-11 12:47) [3]Пока я писал, тут уже ссылочку воткнули %)))
Кстати, реально, очень беспантовая и гиморная реализация %)))
← →
MBo (2002-06-11 12:50) [4]>1) Перегрузи +
Уши С++ торчат ;)
← →
Skyle (2002-06-11 13:05) [5]
> >1) Перегрузи +
> Уши С++ торчат ;)
Есть маленько...%) А что, плохо чтоли? %))))
← →
MBo (2002-06-11 13:45) [6]Дык нету перегрузки операторов в Object Pascal.
Придется делать
function SuperIntAdd(i1,i2:SuperInt):SuperInt;
:)
← →
Skyle (2002-06-11 13:54) [7]Ну да....либо так, либо чисто по-русски %)
Например "перегрузка" (так точнее) операторов для работы с векторами выглядела у меня в своё время примерно так
function Plus (A,B:Vector):Vector;
%)
И никто не напрягался...%) А на С++ это выглядит всё-таки гораздо лучше (ИМХО)...
В данном случае дело просто в названиях...%)
← →
Вячеслав (2002-06-11 14:33) [8]http://triade.studentenweb.org/GInt/gint.html
← →
Slinker (2002-06-13 17:28) [9]Кстати, чем не нравится реализация на Algolist"е ?
← →
Slinker (2002-06-13 17:43) [10]Кстати Skyle, такая функция перегрузки оператора будет работать в несколько раз медленнее, чем с const"ами.
Впрочем, насколько я понял, скорость не обязательна => так оно как раз попроще будет тогда.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c