Форум программистов, компьютерный форум CyberForum.ru

Алгоритм Диффи-Хеллмана. Ошибка вычисления - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
23.11.2012, 19:58     Алгоритм Диффи-Хеллмана. Ошибка вычисления #1
Добрый вечер, я реализую алгоритм Диффи-Хелмана и столкнулся со следующими проблемами
1) в программе неправильно вычисляется значение k2 хотя при пересчете значений на калькуляторе k1=k2
в чем моя ошибка ? Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
 
int main(int argc, char *argv[])
{ 
    int q,p,na,nb,n,rez;
   long long z1,z2 ,Ya,Yb,k1,k2;
   p=17;
   q=3;
   na=3;
   nb=8;
   z1= pow(q,na);
   z2= pow(q,nb);
   Ya=z1 % p;
   Yb =z2 % p;
   int z3= pow(Yb,na);
  int z4= pow(Ya,nb);
   k1=z3 % p;
   k2=z4 % p;
   cout<<"open key Ya = "<<Ya<<endl;
   cout<<"open key Yb = "<<Yb<<endl;
   cout<<"secret key  = "<<k1<<endl;
   cout<<"secret key  = "<<k2<<endl;
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
2) посоветуйте какую библиотеку подключить чтобы производить арифметические операции с очень большими числами (10^34)? (операционка - win7, среда разработки dev c++)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.11.2012, 20:12     Алгоритм Диффи-Хеллмана. Ошибка вычисления #2
Цитата Сообщение от ahamoth Посмотреть сообщение
z1= pow(q,na);
работает с плавающими числами а у тебя кругом целочисленные возможна ошибка округления, пройди отладчиком по шагам и посмотри где начинает врать
реализуй свою функцию возведения в степень для целочисленных типа
C++
1
2
3
4
5
6
7
int MyPow(int n1,int n2)
{
int pw=1;
for(int i=0;i<n2;i++)
  pw*=n1;
return pw;
}
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
23.11.2012, 20:48  [ТС]     Алгоритм Диффи-Хеллмана. Ошибка вычисления #3
а что на счет библиотеки?
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.11.2012, 20:49     Алгоритм Диффи-Хеллмана. Ошибка вычисления #4
не слыхал про такие
может самому класс придется реализовывать
ahamoth
 Аватар для ahamoth
0 / 0 / 0
Регистрация: 26.11.2010
Сообщений: 111
23.11.2012, 21:05  [ТС]     Алгоритм Диффи-Хеллмана. Ошибка вычисления #5
а можешь сказать что вот эта запись означает pw*=n1?
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
23.11.2012, 21:07     Алгоритм Диффи-Хеллмана. Ошибка вычисления #6
Цитата Сообщение от ahamoth Посмотреть сообщение
вот эта запись означает pw*=n1?
сокращенная запись вот этого
C++
1
pw=pw*n1;
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
25.10.2013, 07:54     Алгоритм Диффи-Хеллмана. Ошибка вычисления #7
привет всем! а есть у кого этот алгоритм только переменные вводимые а на заданные
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.10.2013, 08:14     Алгоритм Диффи-Хеллмана. Ошибка вычисления #8
библиотека gmp есть.
http://gmplib.org
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.10.2013, 09:59     Алгоритм Диффи-Хеллмана. Ошибка вычисления
Еще ссылки по теме:

Алгоритм вычисления CRC-8 C++
алгоритм вычисления C++
C++ Алгоритм вычисления времени

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Жасулан
1 / 1 / 0
Регистрация: 22.10.2013
Сообщений: 68
25.10.2013, 09:59     Алгоритм Диффи-Хеллмана. Ошибка вычисления #9
а там описывается только библиотека, а хотел бы посмотреть наглядный пример алгоритма или если это возможно простенкии и работающии исходник на с++))

Добавлено через 1 час 38 минут
gromo, а там описывается только библиотека, а хотел бы посмотреть наглядный пример алгоритма или если это возможно простенкии и работающии исходник на с++))
Yandex
Объявления
25.10.2013, 09:59     Алгоритм Диффи-Хеллмана. Ошибка вычисления
Ответ Создать тему
Опции темы

Текущее время: 23:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru