Войти

Показать полную графическую версию : Алгоритм Диффи-Хелмана


Artya
13-04-2006, 23:47
Добрый день. помогите ктото реализовать этот самый алгоритм на паскале.
а то у меня с математичискими функциями не очень получаеца в паскале :(
вот попробывал вот так зделать:

var
v,n,x,y,a,b,k,k2:integer;
begin
randomize;
v:=123450;
n:=987612;
x:=random(500);
y:=random(500);
a:=(power(v,x)) mod n;
b:=(power(v,y))mod n;
k:=(power(((power(v,y))mod n),x))mod n;
k2:=(power((trunc(power(v,x))mod n),y))mod n;
writeln(inttostr(k));
writeln(inttostr(k2));
но шото оно не хочет работать так...

DillerInc
14-04-2006, 15:37
Artya
Значит так:
1. Если ты пользуешься математической функцией Power, то тебе необходимо использовать вещественный тип(Extended),а не целый(Integer).
2. Почему у тебя никак не используются переменные a и b ?
3. Для вещественных чисел можно и нужно использовать операцию деления без отбрасывания дробной части(символ /).
mod тут походу не подходит.

А вообще так трудно пытаться заставить алгоритм правильно работать без теории последнего.Дай что-ли краткое описание или ссылку какую-нибудь.

Artya
17-04-2006, 00:52
http://book.itep.ru/6/difi_646.htm

DillerInc
17-04-2006, 16:47
Artya
Что-то больно сухо...
Я вобще не понял,надо ли использовать вещественный тип...в частности степень??
Дело в том,что немного изменив вышеприведённый код,его удастся скомпилировать,но приложение будет падать из-за ошибки переполнения плавающей точки.




© OSzone.net 2001-2012