亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ecc_alfa.c

?? 1、DES加密示例程序
?? C
字號:
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
#include "time.h"

#define A 1
#define B 1
#define P 193

long LamdaDif(long *x, long *y);
long Lamda(long *x, long *y);
long LamdaDifF(long *x, long *y);

long t1[3] = {0}, t2[3] = {0};

long GCD(long m, long n)
{
	long temp = 0;
	if(m == 0 && n == 0)	return 1;
	else if(m == 0)	return n;
		else if(n == 0) return m;
			else
			{
				if(m > n)
				{
					temp = m % n;
					if(temp == 0)	return n;
					else
					{
						m = temp;
						temp = GCD(m, n);
					}
				}
				else
				{
					temp = n % m;
					if(temp == 0)	return m;
					else
					{
						n = temp;
						temp = GCD(m, n);
					}
				}
			}
}

long GetReverse(long d/*, long *t1, long *t2*/)
{
	int i = 0;
	long temp = d;
	for(i = 0; i < P-3; i ++)
	{
		d = (d * temp) % P;
	}
	return d % P;
/*
	long Q = 0, i = 0;
	long t[3] = {0};
	
	t1[0] = 1; t1[1] = 0; t1[2] = P;
	t2[0] = 0; t2[1] = 1; t2[2] = d;
	while(1)
	{
		if(t2[2] == 0)	return -1;
		else if(t2[2] == 1)	
		{
			if(t2[1] < 0)	t2[1] += P;
			return t2[1];
		}
		Q = t1[2] / t2[2];
		t[0] = t1[0] - Q * t2[0];
		t[1] = t1[1] - Q * t2[1];
		t[2] = t1[2] - Q * t2[2];
		for(i = 0; i < 3; i++)
		{
			t1[i] = t2[i];
			t2[i] = t[i];
		}
	}
*/
}

void init(long *g)
{
	printf("\n\t======= Elliptic Curves Crypto =======");
	printf("\n\t# Y^2 = X^3 + Ax + B (A = 1, B = 1)  #");
	printf("\n\t#    The Selected Point G is (1, 3)  #");
	printf("\n\t============== F(193) ================");
	printf("\n\tEnter the x Value: ");
	scanf("%ld", g);
	printf("\tEnter the y Value: ");
	scanf("%ld", g+1);
}

long Add(long *x, long *y)
{
	long L = 0, count = 0, buf1 = 0, buf2 = 0, i = 1024;
	
	x[1] = x[0];	y[1] = y[0];
	while(i--)
	{
		++ count;
		if(x[1] == x[0] && y[1] == y[0])	/*P = Q*/
		{
			L = Lamda(x, y);
		}
		else						/*P != Q*/
		{
			L = LamdaDif(x, y);
		}
		x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
		y[2] = (L * (x[0] - x[2]) - y[0] + (37526/P)*P) % P;
		/*if(y[2] < 0)	y[2] = (y[2] + P) % P;*/
		if(x[2] == x[0] && y[0] + y[2] == P)	break;
		printf("[%3ld,%3ld] ", x[2], y[2]);
		buf1 = y[1];	buf2 = x[1];
		y[1] = y[2];	x[1] = x[2];
		y[2] = buf1;	x[2] = buf2;
	}
	return count;
}

long *GeneratePA(long N, long *Pa, long *x, long *y, long *Na)
{
	long i = 0, L = 0, buf1 = 0, buf2 = 0;
	x[1] = x[0];	y[1] = y[0];
	printf("\n\tEnter The Na Between 1--%ld: ", N);
	scanf("%ld", Na);
	
	L = Lamda(x, y);
	x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
	y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
	buf1 = y[1];	buf2 = x[1];
	y[1] = y[2];	x[1] = x[2];
	y[2] = buf1;	x[2] = buf2;
	
	for(i=0; i < *Na-1; i++)
	{
		if(x[1] == x[0] && y[1] == y[0])	/*P = Q*/
		{
			L = Lamda(x, y);
		}
		else						/*P != Q*/
		{
			L = LamdaDif(x, y);
		}
		x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
		y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
		
		buf1 = y[1];	buf2 = x[1];
		y[1] = y[2];	x[1] = x[2];
		y[2] = buf1;	x[2] = buf2;
	}
	Pa[0] = x[1];	Pa[1] = y[1];
	return Pa;
}

long *rG(long r, long *x, long *y, long *C1)
{
	long i = 0, L = 0, buf1 = 0, buf2 = 0;
	x[1] = x[0];	y[1] = y[0];
	
	L = Lamda(x, y);
	x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
	y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
	if(y[2] < 0) y[2] = (y[2] + P) % P;
	buf1 = y[1];	buf2 = x[1];
	y[1] = y[2];	x[1] = x[2];
	y[2] = buf1;	x[2] = buf2;
	
	for(i=0; i < r-1; i++)
	{
		if(x[1] == x[0] && y[1] == y[0])	/*P = Q*/
		{
			L = Lamda(x, y);
		}
		else						/*P != Q*/
		{
			L = LamdaDif(x, y);
		}
		x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
		y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
		
		buf1 = y[1];	buf2 = x[1];
		y[1] = y[2];	x[1] = x[2];
		y[2] = buf1;	x[2] = buf2;
	}
	C1[0] = x[1];	C1[1] = y[1];
	return C1;
}

long *rGF(long r, long *x, long *y, long *C1)
{
	long i = 0, L = 0, buf1 = 0, buf2 = 0;
	x[1] = x[0];	y[1] = y[0];
	
	L = Lamda(x, y);
	x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
	y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
	buf1 = y[1];	buf2 = x[1];
	y[1] = y[2];	x[1] = x[2];
	y[2] = buf1;	x[2] = buf2;
	
	for(i=0; i < r-1; i++)
	{
		if(x[1] == x[0] && y[1] == y[0])	/*P = Q*/
		{
			L = Lamda(x, y);
		}
		else						/*P != Q*/
		{
			L = LamdaDifF(x, y);
			if(L == -1)
			{
				x[2] = -1;
				return x;
			}
		}
		x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
		y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
		
		buf1 = y[1];	buf2 = x[1];
		y[1] = y[2];	x[1] = x[2];
		y[2] = buf1;	x[2] = buf2;
	}
	C1[0] = x[1];	C1[1] = y[1];
	return C1;
}

long *GenerateC2(long *x, long *y, long *C2, long *Pm, long *rPa)
{
	long L = 0;
	
	x[0] = Pm[0];	x[1] = rPa[0];
	y[0] = Pm[1];	y[1] = rPa[1];
	L = LamdaDif(x, y);
	x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
	y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
	
	C2[0] = x[2];	C2[1] = y[2];
	return C2;
}

long *Decrypt(long *x, long *y, long *C2, long *C1, long *Pm)
{
	long L = 0;
	
	x[0] = C2[0];	x[1] = C1[0];
	y[0] = C2[1];	y[1] = P - C1[1];
	L = LamdaDif(x, y);
	x[2] = ((L * L) - (x[0] + x[1]) + (32576/P)*P) % P;
	y[2] = (L * (x[0] - x[2]) - y[0] + (32576/P)*P) % P;
	
	Pm[0] = x[2];	Pm[1] = y[2];
	return Pm;
}

void main()
{
	long x[3] = {0}, y[3] = {0}, Pa[2] = {0}, C1[2] = {0}, C2[2] = {0}, Pm[2] = {0}, rPa[2] = {0};
	long N = 0, Na = 0, r = 0, i = 0, j = 0;
	long g[2] = {0}, temp = 0;
	int M = 3;
	char ch = '\0';
	
	clrscr();
LOP:	randomize();
	r = random(3);
	if(r == 0)	r ++;
	/*Select G(x,y)*/
	init(g);
	printf("\n\tG=(%ld, %ld)\n", g[0], g[1]);
	x[0] = g[0];
	y[0] = g[1];
	/*End*/
	/*GeneratePA*/
	N = Add(x, y);
	x[0] = g[0];
	y[0] = g[1];
	GeneratePA(N, Pa, x, y, &Na);
	printf("\n\tNa is: %ld\n", Na);
	printf("\n\tThe Random r is: %ld\n", r);
	printf("\n\tPa=(%ld, %ld)\n", Pa[0], Pa[1]);
	/*End*/
	printf("\n\tEnter a test letter: ");	getchar();
	scanf("%c", &ch);
	M = ch;
	printf("\n\tM is %d\n", M);
	for(i = 0; 2*M + i < P; i++)
	{
		x[0] = 2*M + i;
		for(j = 1; j < P; j++)
		{
			temp = (j * j) % P;
			if(temp == ((x[0] * x[0] * x[0] + x[0] + 1) % P))
			{
				Pm[0] = x[0];
				Pm[1] = j;
				goto LOP2;
			}
		}
	}
	
LOP2:	printf("\n\tPm=(%ld, %ld)\n", Pm[0], Pm[1]);
	/*Encrypt*/
	/*printf("\n\tThe Random Num is %d", r);*/
	x[0] = g[0];
	y[0] = g[1];
	rG(r, x, y, C1);
	printf("\n\trG:<%ld,%ld>\n", C1[0], C1[1]);
	x[0] = Pa[0];
	y[0] = Pa[1];
	rG(r, x, y, rPa);
	printf("\n\trPa:<%ld,%ld>\n", rPa[0], rPa[1]);
	GenerateC2(x, y, C2, Pm, rPa);
	printf("\n\tC:[rG,Pm + rPa]  C:[(%ld, %ld),(%ld, %ld)]\n", C1[0], C1[1], C2[0], C2[1]);
	/*End*/
	/*Decrypt*/
	x[0] = C1[0];
	y[0] = C1[1];
	rGF(Na, x, y, C1);
	if(x[2] == -1)
	{
		printf("\n\tUnsuitble Na or r, Retry\n");
		goto LOP;
	}
	printf("\n\tNa(rG):<%ld,%ld>\n", C1[0], C1[1]);
	Decrypt(x, y, C2, C1, Pm);
	printf("\n\tPm=(%ld, %ld)\n", Pm[0], Pm[1]);
	printf("\n\tDecrypted M = (Pm[0]/2): %d", Pm[0]/2);
	getchar();
	scanf("%c", ch);
	/*End*/
}

long LamdaDif(long *x, long *y)
{
	long temp = 0, temp1 = 0, temp2 = 0, divisor = 0, dividend = 0, tag = 0, gcd = 0;

	divisor = x[1] - x[0];
	if(divisor < 0)
	{
		tag = 1;
		divisor = fabs(divisor);
	}
	
	dividend = y[1] - y[0];
	if(tag == 1)
	{
		dividend *= -1;
	}
	
	temp1 = fabs(divisor);	
	temp2 = fabs(dividend);
	gcd = GCD(temp1, temp2);

	dividend /= gcd;
	divisor /= gcd;
	divisor = GetReverse(divisor/*, t1, t2*/);

	temp = (((dividend + (32576/P)*P) % P) * (divisor % P)) % P;
	return temp;
}

long LamdaDifF(long *x, long *y)
{
	long temp = 0, temp1 = 0, temp2 = 0, divisor = 0, dividend = 0, tag = 0, gcd = 0;

	divisor = x[1] - x[0];
	if(divisor == 0)	return -1;
	if(divisor < 0)
	{
		tag = 1;
		divisor = fabs(divisor);
	}
	
	dividend = y[1] - y[0];
	if(tag == 1)
	{
		dividend *= -1;
	}
	
	temp1 = fabs(divisor);	
	temp2 = fabs(dividend);
	gcd = GCD(temp1, temp2);

	dividend /= gcd;
	divisor /= gcd;
	divisor = GetReverse(divisor/*, t1, t2*/);
	temp = (((dividend + (32576/P)*P) % P) * (divisor % P)) % P;
	return temp;
}

long Lamda(long *x, long *y)
{
	long temp = 0, temp1 = 0, temp2 = 0, divisor = 0, dividend = 0, tag = 0, gcd = 0;

	divisor = 2 * y[0];
	if(divisor < 0)
	{
		tag = 1;
		divisor = fabs(divisor);
	}
	
	dividend = 3 * x[0] * x[0] + A;
	if(tag == 1)
	{
		dividend *= -1;
	}
	temp1 = fabs(divisor);	
	temp2 = fabs(dividend);
	gcd = GCD(temp1, temp2);

	dividend /= gcd;
	divisor /= gcd;
	divisor = GetReverse(divisor/*, t1, t2*/);
	temp = (((dividend + (32576/P)*P) % P) * (divisor % P)) % P;
	return temp;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品一区| 在线观看国产一区二区| 国产91精品露脸国语对白| 在线观看不卡一区| 国产免费久久精品| 肉肉av福利一精品导航| 97久久超碰精品国产| 欧美大肚乱孕交hd孕妇| 一区二区三区不卡视频在线观看| 国产在线不卡视频| 欧美男人的天堂一二区| 亚洲欧洲日产国码二区| 国产大陆a不卡| 精品国产第一区二区三区观看体验| 一区二区三区中文字幕电影 | 国产精品久久久久久久岛一牛影视| 日韩不卡免费视频| 欧美在线免费视屏| 中文字幕视频一区二区三区久| 国模冰冰炮一区二区| 日韩欧美在线不卡| 天天综合网 天天综合色| 99久精品国产| 18欧美乱大交hd1984| 成人性生交大片免费看视频在线| 欧美tk—视频vk| 天天综合日日夜夜精品| 欧美精品自拍偷拍| 日韩电影一二三区| 欧美另类变人与禽xxxxx| 亚洲电影视频在线| 欧美另类videos死尸| 天天免费综合色| 欧美日韩你懂得| 日韩精彩视频在线观看| 欧美一区二区视频免费观看| 首页国产欧美久久| 在线不卡欧美精品一区二区三区| 日韩中文字幕亚洲一区二区va在线| 欧美日韩国产高清一区二区三区| 亚洲成人福利片| 日韩欧美在线网站| 国产精品亚洲成人| 国产精品成人免费在线| 在线一区二区视频| 日韩和欧美一区二区三区| 欧美一区日韩一区| 精品一区中文字幕| 欧美激情一区二区三区四区| av中文字幕不卡| 一区二区三区国产精华| 欧美系列在线观看| 男男成人高潮片免费网站| 日韩欧美国产系列| 粉嫩蜜臀av国产精品网站| 亚洲男人天堂av网| 制服丝袜中文字幕一区| 久久99久久精品| 国产女主播视频一区二区| 99国产精品久久久久久久久久久| 亚洲gay无套男同| 久久久久久久久久久久久夜| 99精品1区2区| 日韩国产欧美在线播放| 国产日韩亚洲欧美综合| 在线免费观看日本欧美| 久久精品国产99国产| 国产精品久久久久久一区二区三区 | 欧美一区二区视频在线观看2022| 精品一区二区三区在线播放| 成人欧美一区二区三区1314| 欧美美女黄视频| 国产一区高清在线| 亚洲视频一区二区在线| 欧美一区二区三区在线看| 成人免费高清在线| 日韩综合一区二区| 亚洲色图色小说| 91精品国产黑色紧身裤美女| 成人av午夜影院| 人人精品人人爱| 亚洲最新视频在线观看| 久久亚洲精品国产精品紫薇| 欧美性大战久久久久久久蜜臀| 激情综合网激情| 亚洲va国产天堂va久久en| 国产精品久久三| 精品国产免费人成在线观看| 欧美色图一区二区三区| youjizz久久| 黑人巨大精品欧美一区| 午夜国产不卡在线观看视频| 中文字幕日本乱码精品影院| 久久久精品黄色| 日韩免费视频一区| 欧美日韩的一区二区| 日本黄色一区二区| 99re热这里只有精品视频| 国产精品主播直播| 久久疯狂做爰流白浆xx| 香港成人在线视频| 夜夜亚洲天天久久| 亚洲少妇30p| 成人免费在线播放视频| 国产精品高潮久久久久无| 国产亚洲一本大道中文在线| 欧美精品一区二区在线播放| 日韩一区二区三区精品视频| 3d动漫精品啪啪| 9191精品国产综合久久久久久| 欧美午夜免费电影| 日本高清不卡aⅴ免费网站| 色呦呦国产精品| 色噜噜狠狠成人中文综合| 972aa.com艺术欧美| 色综合天天综合狠狠| 99久久综合99久久综合网站| a在线播放不卡| 99久久777色| 在线观看精品一区| 欧美精品第一页| 9191成人精品久久| 精品久久久久一区二区国产| 26uuu色噜噜精品一区二区| 精品电影一区二区| 欧美成人在线直播| 国产欧美精品一区二区色综合 | 26uuu久久综合| 久久久精品天堂| 国产精品视频你懂的| 亚洲免费av观看| 亚洲国产成人tv| 精品一区二区三区的国产在线播放| 激情五月婷婷综合| 丁香天五香天堂综合| 色又黄又爽网站www久久| 欧美精品久久天天躁| xfplay精品久久| 国产精品免费久久| 亚洲va国产va欧美va观看| 天天av天天翘天天综合网色鬼国产| 日韩一区欧美二区| 国产一区二区三区日韩| 成人av在线资源网站| 欧美在线一区二区三区| 日韩欧美在线观看一区二区三区| 久久久久久电影| 亚洲美女区一区| 久久99精品国产麻豆不卡| 菠萝蜜视频在线观看一区| 欧美色综合久久| 久久婷婷国产综合精品青草| 亚洲欧洲av在线| 蜜臀av性久久久久蜜臀av麻豆| 成人午夜碰碰视频| 欧美午夜一区二区三区| 久久精品欧美一区二区三区不卡 | 26uuu欧美| 亚洲美女在线国产| 精品在线视频一区| 色婷婷精品久久二区二区蜜臂av | 欧美午夜精品久久久久久孕妇 | 亚洲欧美一区二区视频| 免费久久精品视频| 91在线云播放| 久久久av毛片精品| 午夜伊人狠狠久久| 99精品视频中文字幕| 欧美大白屁股肥臀xxxxxx| 亚洲黄网站在线观看| 国产精品一区久久久久| 欧美日本乱大交xxxxx| 亚洲欧洲国产专区| 国产精品一区二区久久精品爱涩| 在线观看91av| 亚洲精品国产第一综合99久久| 国产精品99久久久久久久女警| 91精品国产综合久久久久久久| 亚洲人吸女人奶水| 国产乱人伦精品一区二区在线观看| 欧美体内she精视频| 亚洲欧美日韩综合aⅴ视频| 国产河南妇女毛片精品久久久| 欧美一区二区网站| 香蕉成人啪国产精品视频综合网| 色av一区二区| 国产精品久久久久久久裸模| 国产福利精品一区二区| 日韩你懂的电影在线观看| 亚洲成av人片一区二区梦乃| 在线看日韩精品电影| 亚洲天堂精品在线观看| www.66久久| 中文字幕在线一区免费| 成人禁用看黄a在线| 日本一区二区三区四区| 成人免费av网站| 国产精品久久久久影院老司| 成人av集中营| 亚洲欧美一区二区视频|