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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 20:28   #1
bicks
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 10
По умолчанию Помогите понять код (прокомментировать код шифрации на C++).

Объясните код плиз!


Код:
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 вне форума Ответить с цитированием
Старый 09.12.2013, 20:58   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Код:
#include "iostream"  // подключть содержимое файла iostream
// и т.д. 
void FormXY (big P, big g, big Xi, big Yi) // сия функция ничего не возвращает,
//  ибо void, ее входные параметры P,  g, Xi, Yi , все типа big
{
	csprng Rng; // локальная переменная Rng имеет тип csprng
Так что ли ?
type_Oleg на форуме Ответить с цитированием
Старый 09.12.2013, 23:04   #3
bicks
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 10
По умолчанию

да да да
именно так
bicks вне форума Ответить с цитированием
Старый 10.12.2013, 21:31   #4
bicks
Пользователь
 
Регистрация: 21.11.2013
Сообщений: 10
По умолчанию

Поможешь?)
bicks вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно прокомментировать код Господин Никто Помощь студентам 6 09.06.2013 14:08
Прокомментировать код программы lolbox C# (си шарп) 0 24.03.2013 10:11
C# - прокомментировать код программы шифрования магическим квадратом Darh Помощь студентам 0 07.11.2012 10:48
Помогите понять код Arassir JavaScript, Ajax 1 12.05.2009 13:00
Помогите понять код MaGiCeYe Помощь студентам 1 02.04.2007 19:57