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

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

?? rsa.c

?? RSA加密解密算法源碼,功能齊全,沒有密碼,使用方便,學習用.
?? C
字號:
#include <windows.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <time.h>

#define	DATALENGTH	350
#define	MLENGTH		10
#define	TESTNUM		20
#define	SKLENGTH	5
#define TEXTLENGTH	20

typedef signed char byteint[DATALENGTH]; //-128 ->127
typedef signed char mtype[MLENGTH];

mtype Model[TESTNUM];

byteint ONEVALUE,ZEROVALUE,TWOVALUE,EIGHTVALUE;


void InitInt(void);
void SetZero(byteint A);
void IntCpy(byteint A,byteint B);
int IntValid(byteint validtemp);

int IntCmp(byteint A,byteint B);
void Plus(byteint A,byteint B,byteint C);
void Substract(byteint SA,byteint SB,byteint SC);
void Multiply(byteint A,byteint B,byteint C);
void SetMode(byteint A,byteint B,byteint C,byteint D);

void IntRandom(byteint RandomA,int num);

void LoadInt(byteint A,mtype B);
void Mdata(void);
void TransBi(byteint B,signed char flag[400]);

int PowerMode(byteint A,byteint C,byteint D,signed char flag[400]);

int Prime(byteint Prm);
int ComputingPK(byteint Rvalue,byteint SK,byteint PK);
int StrToByt(char *str,byteint byt);
void BytToStr(byteint byt,char *str);

void PackInt(byteint A,int B);

byteint R,SK,PK,RsaKey; 

extern int ShoutBlockingHook (void);
extern char szDataPath[128];

int RsaPrepare(byteint sk,byteint pk,byteint r)
{
 	byteint p,q,Rvalue,buf1,buf2;
	
	Mdata();
	InitInt();

	Prime(p);
	Prime(q);	
	Multiply(p,q,r);
	Substract(p,ONEVALUE,buf1);
	Substract(q,ONEVALUE,buf2);
	Multiply(buf1,buf2,Rvalue);
	ComputingPK(Rvalue,sk,pk); 	
	return TRUE;
}

int ReadRsaFile(byteint r,byteint pk,byteint sk)
{
	char file[80],temp[100+1];

	sprintf(file,"%s\\sys\\rsa.dat",szDataPath);
	
	if(GetPrivateProfileString("RSA", "R", "", temp,100, file)!=0)
		StrToByt(temp,r);	
	else
		return FALSE;
	if(GetPrivateProfileString("RSA", "PK", "", temp, 100, file)!=0)
		StrToByt(temp,pk);
	else
		return FALSE;
	if(GetPrivateProfileString("RSA", "SK", "", temp, 100, file)!=0)
		StrToByt(temp,sk);
	else
		return FALSE;

	return TRUE;
		
}

int WriteRsaFile(byteint r,byteint pk,byteint sk)
{
	char file[80],temp[100+1];

	sprintf(file,"%s\\sys\\rsa.dat",szDataPath);
	
	memset(temp,0,100+1);
	BytToStr(r,temp);
	if(WritePrivateProfileString("RSA", "R", temp, file)==0)
		return FALSE;
	memset(temp,0,100+1);
	BytToStr(pk,temp);
	if(WritePrivateProfileString("RSA", "PK", temp, file)==0)
		return FALSE;
	memset(temp,0,100+1);
	BytToStr(sk,temp);
	if(WritePrivateProfileString("RSA", "SK", temp, file)==0)
		return FALSE;

	return TRUE;		
}


int DecipherDesKey(byteint rsakey,byteint r,byteint sk,char *deskey)
{
	byteint buf1;
	signed char flag[400];

	Mdata();
	InitInt();

	TransBi(sk,flag);
	PowerMode(rsakey,r,buf1,flag);
    BytToStr(buf1,deskey);
    	
	return 0;
}

void InitInt(void)
{
	SetZero(ONEVALUE);
	ONEVALUE[DATALENGTH-1]=1;
	SetZero(ZEROVALUE);
	SetZero(TWOVALUE);
	TWOVALUE[DATALENGTH-1]=2;
	SetZero(EIGHTVALUE);
	EIGHTVALUE[DATALENGTH-1]=8;
	//randomize();
	srand((unsigned)time(NULL));
}


void Multiply(byteint A,byteint B,byteint C)
{
	register i,j,w;
	int X,Y,Z;
	int Avalid=0;
	int Bvalid=0;

	while(A[Avalid]==0 &&Avalid <DATALENGTH)
		Avalid++;
	while(B[Bvalid]==0 &&Bvalid <DATALENGTH)
		Bvalid++;
	SetZero(C);
	for(i=DATALENGTH -1;i>=Avalid;i--)
	{
		for(j=DATALENGTH-1;j>=Bvalid;j--)
		{
			X=A[i]*B[j];
			Y=X/10;
			Z=X-10*Y;
			w=i+j-(DATALENGTH-1);
			C[w]=C[w]+Z;
			C[w-1]=C[w-1]+(C[w]/10)+Y;
			C[w]=C[w]-(C[w]/10)*10;
		}
	}
}

void SetZero(byteint A)
{
	memset(A,0,DATALENGTH);
}

void IntCpy(byteint A,byteint B)
{
	memcpy(A,B,DATALENGTH);
}

void Plus(byteint A,byteint B,byteint C)
{
	register i;
	int X,Y,Z,m,n,valid;

	m=IntValid(A);
	n=IntValid(B);
	valid=(m>n) ? m+1:n+1;
	SetZero(C);
	for(i=DATALENGTH -1;i>=DATALENGTH -valid;i--)
	{
		X=A[i] +B[i];
		Y=X/10;
		Z=X-10*Y;

		C[i]=C[i]+Z;
		C[i-1]=C[i-1]+Y;
	}
}

void Substract(byteint SA,byteint SB,byteint SC)
{
	byteint buf;
	register i,j;
	int X;

	IntCpy(buf,SA);
	SetZero(SC);

	for(i=DATALENGTH-1;i>=0;i--)
	{
		if(buf[i]<SB[i]){
			buf[i]+=10;
			if(buf[i-1]>0)
				(buf[i-1])--;
			else {
				j=i-1;
				while (buf[j]==0)
					buf[j--]=9;
				buf[j]--;
			}
		}
		X=buf[i]-SB[i];
		SC[i]=X;
	}
}

int IntCmp(byteint A,byteint B)
{
	int stat;

	stat =memcmp(A,B,DATALENGTH);
	if(stat ==0)
		return 0;
	if(stat>0)
		return 1;
	return -1;
}

int IntValid(byteint validtemp)
{
	register i=0;
	while (validtemp[i]==0 && i<DATALENGTH)
		i++;
	return DATALENGTH-i;
}

void SetMode(byteint A,byteint B,byteint C,byteint D)
{
	register i,j,k;

	int valid_1,valid_2,valid,sbits,cmpval;
	byteint buf1,buf2;

	SetZero(D);
	IntCpy(C,A);
	valid_2=IntValid(B);
	while((cmpval =IntCmp(C,B))>0){
		valid_1 =IntValid(C);
		valid =valid_1-valid_2;
		if(valid>0){
			i=DATALENGTH -valid_1;
			j=DATALENGTH -valid_2;
			sbits=0;
			for(k=j;k<DATALENGTH;k++){
				if(C[i]>B[j])
					break;
				if(C[i]<B[j]){
					sbits=1;
					break;
				}
				i++;j++;
			}
			valid=valid -sbits;
			SetZero(buf1);
			for(i=valid;i<DATALENGTH;i++){
				j=i-valid;
				buf1[j]=B[i];
			}
		}
		else
			IntCpy(buf1,B);

		D[DATALENGTH-1-valid]++;
		Substract(C,buf1,buf2);
		IntCpy(C,buf2);
	}

	if(cmpval==0){
		SetZero(C);
		D[DATALENGTH-1]++;
	}
}

void IntRandom(byteint RandomA,int num)
{
	int i;
	SetZero(RandomA);
	while(!(RandomA[DATALENGTH-1] % 2))
		RandomA[DATALENGTH-1]=rand() % 10;

	while(!RandomA[DATALENGTH-num])
		RandomA[DATALENGTH-num] =rand() % 10;

	i=DATALENGTH -2;
	while(i>=DATALENGTH -num +1)
		RandomA[i--]=rand() % 10;
}

void LoadInt(byteint A,mtype B)
{
	register i,j;

	SetZero(A);
	i=DATALENGTH -1;
	j=MLENGTH -1;
	while(j>=0)
		A[i--]=B[j--];
}

void Mdata(void)
{
	register i,j;

	int k=MLENGTH -2;
	memset(Model,0,TESTNUM*MLENGTH);
	for(i=0;i<TESTNUM;i++){
		for(j=MLENGTH-1;j>=k;j--)
			Model[i][j]=rand()%10;
		k-=1;
	}
}

void TransBi(byteint B,signed char flag[400])
{
	byteint buf;
	byteint result;
	byteint temp;
	register i;

	memset(flag,0,400);
	i=399;
	IntCpy(buf,B);
	while(IntCmp(buf,ZEROVALUE)==1){
		ShoutBlockingHook();
		SetMode(buf,TWOVALUE,temp,result);
		flag[i]=temp[DATALENGTH -1];
		IntCpy(buf,result);
		i--;
	}
	flag[i] =-1;
}

int PowerMode(byteint A,byteint C,byteint D,signed char flag[400])
{
	byteint buf;
	byteint result;
	byteint temp,P;
	register i;

	IntCpy(temp,A);
	if(flag[399]==1)
		IntCpy(result,A);
	else
		IntCpy(result,ONEVALUE);
	i=398;
	while(flag[i]!=-1){
		ShoutBlockingHook();
		Multiply(temp,temp,buf);
		SetMode(buf,C,temp,P);
		if(flag[i]!=0){
			Multiply(temp,result,buf);
			SetMode(buf,C,result,P);
		}
		i--;
	}
	IntCpy(buf,C);
	IntCpy(D,result);
	Substract(buf,ONEVALUE,temp);
	if(IntCmp(result,ONEVALUE)==0)
		return 1;
	if(IntCmp(result,temp)==0)
		return 2;
	return 0;
}

int Prime(byteint Prm)
{
	int i,k,ok,cnt=0;
	signed char flag[400];
	byteint A,B,D,buf1,buf2;
	int pass=0,pass_2=0;

	while(1){
		ShoutBlockingHook();
		cnt++;
		IntRandom(B,MLENGTH);

		IntCpy(Prm,B);
		Substract(B,ONEVALUE,buf1);
		SetMode(buf1,TWOVALUE,buf2,B);
		TransBi(B,flag);
		ok=1;
		for(i=0;i<TESTNUM;i++){
			LoadInt(A,Model[i]);
			k=PowerMode(A,Prm,D,flag);
			if(k!=1&&k!=2)
				break;
			if(k==2){
				pass_2=1;
			}
		}
		if(ok && pass_2 ){
			return 0;
		}
	}
}

int ComputingPK(byteint Rvalue,byteint SK,byteint PK)
{
	register i;
	byteint PA,PB,PC,buf,temp,buf2;
	SetZero(PK);
	while(1)
	{
		IntRandom(SK,SKLENGTH);

		IntCpy(PB,SK);
		IntCpy(PA,Rvalue);
		while(1) {
			ShoutBlockingHook();
			SetMode(PA,PB,PC,PK);
			i=IntCmp(PC,ONEVALUE);
			if(i==0)
				break;
			i=IntCmp(PC,ZEROVALUE);
			if(i==0){
				i=-1;
				break;
			}
			IntCpy(PA,PB);
			IntCpy(PB,PC);
		}
		if(i==0)
			break;
	}
	IntCpy(temp,ONEVALUE);
	IntCpy(PA,Rvalue);
	IntCpy(PB,SK);

	while (1){
		Multiply(PA,temp,buf);
		Plus(buf,ONEVALUE,buf2);
		SetMode(buf2,PB,buf,PK);
		if(IntCmp(buf,ZEROVALUE)==0)
			break;
		Plus(temp,ONEVALUE,buf);
		IntCpy(temp,buf);
	}
	return 1;
}

void PackInt(byteint A,int B)
{
	register i=DATALENGTH-1;

	SetZero(A);
	while(B>0){
		A[i--]=B % 10;
		B=B/10;
	}
}

int StrToByt(char *str,byteint byt)
{
	unsigned int m;
	
	SetZero(byt);
	for(m=0;m<strlen(str);m++)
		byt[DATALENGTH-1-m]=str[strlen(str)-m-1]-'0';
	return 1;
}

void BytToStr(byteint byt,char *str)
{
 	unsigned  int i=0,j=0;
 	while(i<DATALENGTH&&byt[i]==0) i++;
 	for(;i<DATALENGTH;i++,j++)
 	{
 		str[j] =byt[i]+'0';
 	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91久久精品网| 日韩国产成人精品| 不卡一二三区首页| 国产精品国产三级国产aⅴ中文| 成人黄色一级视频| 中文字幕亚洲视频| 欧美三级乱人伦电影| 日韩在线观看一区二区| 精品国产乱码久久久久久老虎| 国产精品一色哟哟哟| 国产精品久久久久久久蜜臀| 91免费观看视频| 午夜影视日本亚洲欧洲精品| 日韩美女一区二区三区| 成人一区在线观看| 一级中文字幕一区二区| 7777精品伊人久久久大香线蕉| 韩国欧美国产一区| 成人免费在线观看入口| 欧美美女一区二区在线观看| 国产精品资源在线观看| 亚洲精品大片www| 欧美精品第一页| 丁香婷婷综合激情五月色| 亚洲一区视频在线| 久久精品亚洲精品国产欧美kt∨| 色婷婷精品久久二区二区蜜臀av| 久久精品久久综合| 1000部国产精品成人观看| 久久精品这里都是精品| 色吊一区二区三区| 国产一区二区在线看| 亚洲一二三区视频在线观看| 精品国产污污免费网站入口 | 图片区日韩欧美亚洲| 精品理论电影在线观看| 91丨九色丨黑人外教| 蜜桃在线一区二区三区| 亚洲精品欧美激情| 久久这里只精品最新地址| 欧洲亚洲精品在线| 国产91高潮流白浆在线麻豆| 五月天国产精品| 国产精品美女久久福利网站| 欧美电影免费观看高清完整版在 | 亚洲精品久久久蜜桃| 精品福利av导航| 欧美日韩综合色| 成人免费视频一区二区| 国产在线不卡一区| 日韩—二三区免费观看av| 亚洲人123区| 中文无字幕一区二区三区| 欧美一级片在线观看| 欧美色手机在线观看| 97久久久精品综合88久久| 国产成人免费高清| 国模娜娜一区二区三区| 久久国产精品99久久人人澡| 亚洲bt欧美bt精品| 亚洲精品亚洲人成人网| 亚洲欧美怡红院| 国产精品久久久久一区| 国产亚洲福利社区一区| 精品国产免费久久 | 狠狠色狠狠色综合| 首页亚洲欧美制服丝腿| 一区二区三区在线影院| 欧美国产综合一区二区| 日本一区二区三区四区在线视频| 久久品道一品道久久精品| 精品国产成人在线影院 | 亚洲一二三四区| 亚洲免费电影在线| 亚洲精品视频一区| 一区二区三区在线观看国产| 亚洲欧美区自拍先锋| 日韩二区在线观看| 韩国女主播成人在线观看| 久久精品国产精品亚洲红杏| 国产精品国产三级国产a| 久久精品日韩一区二区三区| 欧美电影在哪看比较好| 欧美午夜不卡在线观看免费| 亚洲一区中文日韩| 欧美片网站yy| www.性欧美| 日韩av中文字幕一区二区三区| 久久久久久久久久久电影| 9久草视频在线视频精品| 国产乱人伦精品一区二区在线观看| 亚洲第一二三四区| 亚洲精品欧美二区三区中文字幕| 亚洲高清免费观看高清完整版在线观看| 国产精品久线观看视频| 亚洲男人天堂av| 亚洲国产一区二区视频| 老司机精品视频线观看86| 懂色中文一区二区在线播放| 91视频一区二区| 久久色中文字幕| 亚洲综合清纯丝袜自拍| 国产精品一区二区三区99 | 粉嫩aⅴ一区二区三区四区| 国产毛片一区二区| 91捆绑美女网站| 亚洲精品一区二区三区影院| 在线播放欧美女士性生活| 欧美久久免费观看| 久久蜜桃av一区精品变态类天堂| 五月天国产精品| 99久久亚洲一区二区三区青草| av在线不卡免费看| 亚洲视频1区2区| 国模套图日韩精品一区二区| 欧美videos大乳护士334| 婷婷亚洲久悠悠色悠在线播放| 欧美精选一区二区| 亚洲三级小视频| 国产成人综合亚洲91猫咪| 精品理论电影在线观看| 偷拍一区二区三区| 欧美色大人视频| 成人欧美一区二区三区| 国产成人在线电影| 国产无一区二区| 成人av免费观看| 亚洲1区2区3区4区| 日韩欧美二区三区| 欧美丝袜丝nylons| 亚瑟在线精品视频| 26uuu久久天堂性欧美| 国内精品国产三级国产a久久| 欧美精选一区二区| 色综合久久综合中文综合网| 日韩精品久久久久久| 亚洲欧美日韩在线不卡| 国产精品三级视频| 欧美videofree性高清杂交| 欧美午夜精品一区| 日韩在线一区二区三区| 中文字幕免费一区| 欧美精品在线一区二区| av爱爱亚洲一区| 国产精品一区在线观看乱码 | 亚洲黄色av一区| 在线成人高清不卡| 国产在线精品一区二区不卡了 | 亚洲免费三区一区二区| 欧美日韩一区二区三区四区五区| 久久精品国产免费看久久精品| 久久久久久久久久久电影| 在线一区二区三区| 韩国v欧美v日本v亚洲v| 亚洲精品精品亚洲| 久久精品一区二区三区不卡牛牛| 91日韩一区二区三区| 久久精品国产99久久6| 成人欧美一区二区三区小说 | 国产成人av福利| 午夜视黄欧洲亚洲| 亚洲综合在线第一页| 国产蜜臀av在线一区二区三区| 欧美日本国产视频| 91久久久免费一区二区| 国产毛片一区二区| 国产成人精品一区二区三区四区 | 色婷婷国产精品综合在线观看| 国产人久久人人人人爽| 国产专区综合网| 日韩欧美一区电影| 欧美日韩一区二区三区高清| 美女脱光内衣内裤视频久久影院| 亚洲大片一区二区三区| 国产不卡免费视频| 久久婷婷国产综合国色天香| 蜜桃在线一区二区三区| 欧美日韩精品欧美日韩精品一综合 | 亚洲欧美视频在线观看| 18成人在线观看| 国产精品美女久久久久久久久| 欧美裸体bbwbbwbbw| 国产91露脸合集magnet| 国模少妇一区二区三区| 最新日韩av在线| 亚洲人成网站在线| 一区二区三区四区精品在线视频| 欧美日韩美少妇| 高清视频一区二区| 免费在线观看精品| 一个色在线综合| 一区二区三区在线观看视频| 337p日本欧洲亚洲大胆精品 | 97精品国产97久久久久久久久久久久 | 精品国产制服丝袜高跟| 精品久久久久久久久久久久久久久 | 国产精品1区二区.| 欧美在线播放高清精品| 日韩女优视频免费观看| 国产精品久久夜|