Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2013, 18:35   #1
bicks
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 10
По умолчанию Объясните код плиз!

помогите оч надо разобрать код по строчкам
вот сам код :

Код:
extern "C" {
#include "miracl.h"
}
#include "iostream"
#include "string"
#include "time.h"
#include "conio.h"
#include "stdlib.h"
using namespace std;

void FormXY (big P, big g, big Xi, big Yi)
{
	csprng Rng;
	unsigned int mas[100];
	srand (time(NULL));
	for (int i=0; i<100; i++)
	{
		mas[i]=rand();
	}
	strong_init(&Rng,100,(char*)mas,time(NULL));
	do
	{
		strong_bigrand (&Rng,P,Xi);
	}
	while (size(Xi)<2);
	powmod (g,Xi,P,Yi);
	strong_kill (&Rng);
}

void shifr (big P, big g, big Yb, big Mi, big C1, big C2)
{
	csprng Rng;
	big R=mirvar(0);
	big K=mirvar(0);
	unsigned int mas[100];
	srand (time(NULL));
	strong_init(&Rng,100,(char*)mas,time(NULL));
	do
	{
		strong_bigrand(&Rng, P, R);
	}
	while(size(R)<2);
	powmod (g,R,P,C1);
	powmod (Yb, R, P, K);
	multiply (Mi, K, C2);
	divide (C2, P, P);
	mirkill (K);
	mirkill (R);
	strong_kill(&Rng);
}

void deshifr (big P, big g, big Xb, big C1, big C2, big Mi)
{
	big K= mirvar(0);
	powmod (C1, Xb, P, K);
	xgcd (K, P, K, K, K);
	multiply (C2, K, Mi);
	divide (Mi, P, P);
	mirkill (K);
}

int main()
{
	setlocale (0, "");
	miracl*v=mirsys(100,0);
	big P=mirvar(0);
	big g=mirvar(0);
	big a=mirvar(0);
	big t=mirvar(0);
	big b=mirvar(0);
	big Mi=mirvar(0);
	big C1=mirvar(0);
	big C2=mirvar(0);
	v->IOBASE=16;
	cinstr(P,"8DF2A494492276AA3D25759BB06869CBEAC0D83AFB8D0CF7CBB8324F0D7882E5D0762FC5B7210EAFC2E9ADAC32AB7AAC49693DFBF83724C2EC0736EE31C80291");
	cinstr(g,"626D027839EA0A13413163A55B4CB500299D5522956CEFCB3BFF10F399CE2C2E71CB9DE5FA24BABF58E5B79521925C9CC42E9F6F464B088CC572AF53E6D78802");
	cotnum (P, stdout);
	cotnum (g, stdout);
	FormXY(P,g,a,b);
	cout<<"\nСообщение: ";
	const int n=128;
	char h[n];
	cin.getline(h,n);
	int len = strlen(h);
	bytes_to_big (len, h, Mi);
	shifr (P,g,b,Mi,C1,C2);
	deshifr (P,g,a,C1,C2,t);
	cout<<endl;
	cotnum (Mi, stdout);
	cout<<endl;
	cotnum (t, stdout);
	if (compare(Mi,t)==0)
		cout<<"\nСообщения совпали. Программа работает исправно.\n";
	else
		cout<<"Сообщения не совпали!\n";

	system ("pause");
	return 0;
}

Последний раз редактировалось bicks; 08.12.2013 в 18:37.
bicks вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните код tinton Помощь студентам 7 10.05.2012 21:05
Объясните код Neymexa Общие вопросы по Java, Java SE, Kotlin 1 29.11.2008 02:33
Бд в Delphi,объясните плиз RamireZ БД в Delphi 1 21.10.2008 23:58
объясните код Rend1 Общие вопросы Delphi 18 01.02.2008 14:52
объясните пжалуйста что эт такое.....classid....и его параметры плиз очень срочно н. _Solomon_ HTML и CSS 0 14.02.2007 08:26