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

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

?? redemo.c

?? RSA算法應用程序用于實現數據加密和解密
?? C
?? 第 1 頁 / 共 2 頁
字號:
			/* use stdout */			return;		}		if((file = fopen (filename, "rb")) != NULL)				/* successfully opened */			break;		PrintError("ERROR: Cannot open a file with that name.  Try again.", 0);	}	if((fread(&PUBLIC_KEY2, sizeof(PUBLIC_KEY2), 1, file)) != 1) {		PrintMessage("ERROR: Cannot Read Public Key from File.");	} else {		if((fread(&PRIVATE_KEY2, sizeof(PRIVATE_KEY2), 1, file)) != 1)			PrintMessage("ERROR: Cannot Read Private Key from File.");  }	PrintMessage("  Public key 2 and private key 2 are now ready to use.");	KEYPAIR2_READY = 1;	ReadClose(file);}static void WriteKeypair2(void){	FILE *file;	char filename[256];	while(1) {		if(!GetCommand(filename, sizeof (filename), "  Enter filename to save the keypair"))			return;		if (filename[0] == '-' && filename[1] == '\0') {			/* use stdout */			return;		}		if((file = fopen (filename, "wb")) != NULL)				/* successfully opened */			break;		PrintError("ERROR: Cannot open a file with that name.  Try again.", 0);	}	if((fwrite(&PUBLIC_KEY2, sizeof(PUBLIC_KEY2), 1, file)) != 1) {		PrintMessage("ERROR: Cannot Write Public Key to File.");	} else {		if((fwrite(&PRIVATE_KEY2, sizeof(PRIVATE_KEY2), 1, file)) != 1)			PrintMessage("ERROR: Cannot Write Private Key to File.");	}	WriteClose(file);}/* Write the byte string 'integer' to 'file', skipping over leading zeros. */static void WriteBigInteger(file, integer, integerLen)FILE *file;unsigned char *integer;unsigned int integerLen;{	while (*integer == 0 && integerLen > 0) {		integer++;		integerLen--;	}	if (integerLen == 0) {		/* Special case, just print a zero. */		fprintf (file, "00\n");    return;	}    for (; integerLen > 0; integerLen--)		fprintf (file, "%02x ", (unsigned int)(*integer++));  fprintf (file, "\n");}/* Ask the user to use public key 1, 2 or 3 and point publicKey to		 the answer.	 Return 0 on success or 1 if user cancels by entering a blank. */static int GetPublicKey (publicKey)R_RSA_PUBLIC_KEY **publicKey;{	char command[80];	while (1) {		if(KEYPAIR2_READY)			GetCommand(command, sizeof (command), "  Public key 1 or 2?");		else			*command = '1';		switch (*command) {		case '\0':			return (0);		case '1':			*publicKey = &PUBLIC_KEY1;			return (1);		case '2':			if (!KEYPAIR2_READY)				break;			*publicKey = &PUBLIC_KEY2;			return (1);		default:			if (KEYPAIR2_READY)				PrintError ("ERROR: Please enter 1 or 2.  Try again.", 0);			break;		}	}}/* Ask the user to use private key 1, 2 or 3 and point privateKey to		 the answer.	 Return 0 on success or 1 if user cancels by entering a blank. */static int GetPrivateKey(privateKey)R_RSA_PRIVATE_KEY **privateKey;{	char command[80];	while (1) {		if (KEYPAIR2_READY)			GetCommand(command, sizeof (command), "  Public key 1 or 2?");		else			*command = '1';		switch (*command) {		case '\0':			return (0);		case '1':			*privateKey = &PRIVATE_KEY1;			return (1);		case '2':			if (!KEYPAIR2_READY)				break;			*privateKey = &PRIVATE_KEY2;			return (1);		default:			if (KEYPAIR2_READY)				PrintError ("ERROR: Please enter 1 or 2.  Try again.", 0);			break;		}	}}/* Ask the user to use MD2 or MD5 and point digestAlgorithm to the		 answer.	 Return 0 on success or 1 if user cancels by entering a blank. */static int GetDigestAlgorithm (digestAlgorithm)int *digestAlgorithm;{	char command[80];	while (1) {		GetCommand (command, sizeof (command), "  MD2 or MD5 (2 or 5)?");		switch (*command) {		case '\0':			return (0);    case '2':      *digestAlgorithm = DA_MD2;			return (1);		case '5':			*digestAlgorithm = DA_MD5;			return (1);		default:			PrintError ("ERROR: Please enter 2 or 5.  Try again.", 0);			break;		}	}}/* Ask the user to use DES, DESX, DES-EDE2, or DES-EDE3, and point		 encryptionAlgorithm to the answer.	 Return 0 on success or 1 if user cancels by entering a blank. */static int GetEncryptionAlgorithm (encryptionAlgorithm)int *encryptionAlgorithm;{	char command[80];	while (1) {		GetCommand(command, sizeof (command), "  DES, DESX, DES-EDE2 or DES-EDE3 (1, X, 2 or 3)?");		upr(command);		switch(*command) {		case '\0':			return (0);		case '1':			*encryptionAlgorithm = EA_DES_CBC;			return (1);		case 'X':			*encryptionAlgorithm = EA_DESX_CBC;			return (1);		case '2':			*encryptionAlgorithm = EA_DES_EDE2_CBC;			return (1);		case '3':			*encryptionAlgorithm = EA_DES_EDE3_CBC;			return (1);		default:			PrintError ("ERROR: Please enter 1, X, 2 or 3.  Please Try again.", 0);			break;		}	}}/* Ask for the filename using the given prompt string and open it		 for reading.	 Return 0 on success or 1 if error or if user cancels by entering a blank. */static int ReadInit (file, prompt)FILE **file;char *prompt;{	char filename[256];	while (1) {		if(!GetCommand (filename, sizeof (filename), prompt))			return (1);        if ((*file = fopen (filename, "rb")) != NULL)      /* successfully opened */			break;    		PrintError ("ERROR: Cannot open a file with that name.  Try again.", 0);  }  return (0);}/* Read a block of up to length maxPartOutLen bytes from file, storing		 it in partOut and returning its length in partOutLen.   Return 0 on success or 1 if error or end of file. */static int ReadUpdate (file, partOut, partOutLen, maxPartOutLen)FILE *file;unsigned char *partOut;unsigned int *partOutLen;unsigned int maxPartOutLen;{  int status;  	/* fread () returns the number of items read in.	 */	*partOutLen = fread (partOut, 1, maxPartOutLen, file);  status = 0;  if (ferror (file)) {		PrintError ("ERROR: Cannot read file.", 0);    status = 1;  }  if (*partOutLen == 0 && feof (file))		status = 1;	return (status);}/* Read a file of up to length maxBlockLen bytes, storing it in		 block and returning its length in blockLen.	 Ask for the filename using the given prompt string.	 Return 0 on success or 1 if error or if user cancels by entering a blank. */static int ReadBlock (block, blockLen, maxBlockLen, prompt)unsigned char *block;unsigned int *blockLen;unsigned int maxBlockLen;char *prompt;{  FILE *file;	int status;	unsigned char *dummy;  unsigned int dummyLen;  if (ReadInit (&file, prompt))		return (1);	if ((status = ReadUpdate (file, block, blockLen, maxBlockLen)) == 0) {		if (*blockLen == maxBlockLen)			/* Read exactly maxBlockLen bytes, so reading one more will set					 end of file if there were exactly maxBlockLen bytes in the file.			 */      if (!ReadUpdate (file, dummy, &dummyLen, 1)) {				PrintError ("ERROR: File is too large.", 0);				status = 1;			}	}	ReadClose(file);	return (status);}/* Ask for the filename using the given prompt string and open it	 for writing.	 Return 0 on success or 1 if error or if user cancels by entering a blank.*/static int WriteInit (file, prompt)FILE **file;char *prompt;{	char filename[256];	while (1) {		if(!GetCommand (filename, sizeof (filename), prompt))			return(1);		if(filename[0] == '-' && filename[1] == '\0') {			/* use stdout */			*file = stdout;			break;		}		if((*file = fopen (filename, "wb")) != NULL)			/* successfully opened */			break;		PrintError("ERROR: Cannot open a file with that name.  Try again.", 0);	}	return(0);}/* Write block of length partOutLen to a file.	 Return 0 on success or 1 if error. */static int WriteUpdate(file, partOut, partOutLen)FILE *file;unsigned char *partOut;unsigned int partOutLen;{	int status;	status = 0;	if(fwrite(partOut, 1, partOutLen, file) < partOutLen) {		PrintError("ERROR: Cannot write file.", 0);		status = 1;	}	return(status);}/* Write block of length blockLen to a file.	 Ask for the filename using the given prompt string.	 Return 0 on success or 1 if error or if user cancels by entering a blank. */static int WriteBlock (block, blockLen, prompt)unsigned char *block;unsigned int blockLen;char *prompt;{	FILE *file;	int status;	if(WriteInit(&file, prompt))		return (1);	do{		if((status = WriteUpdate (file, block, blockLen)) != 0)			break;		if(file == stdout)			/* Printing to screen, so print a new line. */			printf("\n");	}while(0);	WriteClose(file);	return(status);}/* If type is zero, simply print the task string, otherwise convert the		 type to a string and print task and type. */static void PrintError(task, type)char *task;int type;{	char *typeString, *msg[] = {						"Recovered DES key cannot decrypt encrypted content",						"Encrypted key length or signature length is out of range",						"Modulus length is out of range",						"Private key cannot encrypt message digest, or cannot decrypt encrypted key",						"Public key cannot encrypt data encryption key, or cannot decrypt signature",						"Signature is incorrect",						"Unknown Error",						NULL };	if(type == 0) {		/* Non RSAEURO Related Error */		puts(task);			/* Internal Deal with it */		return;	}	/* Convert the type to a string if it is recognized.	 */	switch(type) {	case RE_KEY:		typeString = msg[0];		break;	case RE_LEN:		typeString = msg[1];		break;	case RE_MODULUS_LEN:		typeString = msg[2];		break;	case RE_PRIVATE_KEY:		typeString = msg[3];		break;	case RE_PUBLIC_KEY:		typeString = msg[4];		break;	case RE_SIGNATURE:		typeString = msg[5];		break;	default:		printf("ERROR: Code 0x%04x, %s", type, msg[6]);		fflush(stdout);		return;	}	printf("ERROR: %s while %s\n", typeString, task);	fflush(stdout);}static int GetCommand(command, maxCommandSize, prompt)char *command;unsigned int maxCommandSize;char *prompt;{	unsigned int i;	printf("%s (blank to cancel): \n", prompt);	fflush(stdout);	fgets(command, maxCommandSize, stdin);	/* Replace the line terminator with a '\0'.	 */	for (i = 0; command[i] != '\0'; i++) {		if (command[i] == '\012' || command[i] == '\015' ||	i == (maxCommandSize - 1)) {			command[i] = '\0';			break;		}	}	return(strlen(command));}static char *upr(char *s){	char *p = s;	while(*s) {		if((*s >= 'a') && (*s <= 'z'))			*s += 'A'-'a';		s++;	}	return p;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国欧美三级| 久久99久久精品| 国产亚洲美州欧州综合国| 欧美日韩1区2区| 一本色道综合亚洲| 99精品热视频| av电影一区二区| 成人免费黄色大片| 不卡一区二区三区四区| eeuss鲁片一区二区三区在线看| 国产精品18久久久久久久久 | 国产精品盗摄一区二区三区| 日韩欧美黄色影院| 精品欧美乱码久久久久久1区2区| 91麻豆精品国产| 日韩美女主播在线视频一区二区三区| 欧美日韩成人在线| 日韩视频在线一区二区| 亚洲精品一区二区精华| 国产日韩欧美不卡| 亚洲三级免费电影| 亚洲自拍与偷拍| 天堂在线亚洲视频| 精品无人码麻豆乱码1区2区| 国产一区二区在线电影| 成人性生交大片免费看在线播放| 国产iv一区二区三区| 91在线观看免费视频| 欧美日韩成人综合| 26uuu色噜噜精品一区二区| 久久亚洲影视婷婷| 成人欧美一区二区三区小说 | 成人h精品动漫一区二区三区| 成人av综合在线| 在线观看国产91| 日韩三级在线免费观看| 国产片一区二区| 一区二区三区精品在线观看| 日韩精品一二三四| 粉嫩绯色av一区二区在线观看| 色妞www精品视频| 日韩一区二区电影| 亚洲欧美在线视频| 久草这里只有精品视频| 夫妻av一区二区| 日韩三级电影网址| 综合激情网...| 热久久国产精品| 成人午夜在线视频| 欧美高清精品3d| 18成人在线视频| 老司机精品视频导航| 色综合久久天天| 久久久亚洲午夜电影| 亚洲国产一区二区在线播放| 国产精品一二二区| 日韩视频一区在线观看| 亚洲三级久久久| 国产91丝袜在线18| 欧美一区二区在线看| 亚洲欧美另类小说视频| 国产成人av自拍| 欧美不卡视频一区| 亚洲18影院在线观看| aa级大片欧美| 亚洲国产精品成人综合色在线婷婷| 性久久久久久久久久久久| 成人av电影在线观看| 欧美精品一区二区三区在线播放| 亚洲图片欧美一区| 色综合一个色综合| 国产精品―色哟哟| 国产成人免费视频精品含羞草妖精 | 国产精品久久三| 狠狠色丁香九九婷婷综合五月| 欧美日韩国产成人在线免费| 中文字幕一区在线| jlzzjlzz亚洲女人18| 久久精品水蜜桃av综合天堂| 日韩av一区二区在线影视| 欧美日韩在线播放三区四区| 亚洲男人天堂一区| 在线观看日韩一区| 亚洲精品va在线观看| 在线中文字幕不卡| 亚洲一区在线视频观看| 成人福利在线看| 国产欧美精品在线观看| 韩国中文字幕2020精品| 久久久久久久久久久电影| 国产麻豆欧美日韩一区| 中文字幕av一区二区三区| 国产成人在线视频免费播放| 中文字幕不卡在线观看| 99视频精品全部免费在线| 亚洲私人黄色宅男| 在线亚洲一区二区| 天天色综合成人网| 精品欧美一区二区三区精品久久| 精品一区二区三区久久| 国产精品素人视频| 91在线国内视频| 亚洲综合激情小说| 欧美一区二区三区男人的天堂| 蜜臀va亚洲va欧美va天堂| 久久影院视频免费| 91亚洲永久精品| 日韩不卡手机在线v区| wwww国产精品欧美| av男人天堂一区| 亚洲国产日产av| 欧美一级搡bbbb搡bbbb| 国产成人av一区二区三区在线观看| 国产精品区一区二区三| 欧美三电影在线| 国产尤物一区二区在线| 亚洲图片激情小说| 日韩欧美亚洲一区二区| 成人激情小说乱人伦| 亚洲不卡一区二区三区| 精品国产人成亚洲区| 91精品福利在线| 国产综合色视频| 亚洲bt欧美bt精品| 国产日韩欧美制服另类| 欧美日韩不卡在线| 成人小视频免费观看| 日本欧美一区二区三区乱码| 国产精品热久久久久夜色精品三区| 欧美夫妻性生活| a亚洲天堂av| 国产精品18久久久久| 一区二区久久久| 国产精品免费看片| 精品少妇一区二区三区在线播放| 色域天天综合网| 国产乱码一区二区三区| 日韩av在线播放中文字幕| 亚洲另类色综合网站| 久久精品免费在线观看| 69av一区二区三区| 日本精品一级二级| 丁香网亚洲国际| 国产精品资源站在线| 视频在线观看一区| 亚洲中国最大av网站| 亚洲国产成人午夜在线一区| 欧美tk丨vk视频| 欧美日韩国产一级片| 色激情天天射综合网| 成人国产精品免费观看| 国产精品一区二区三区乱码| 久久国产精品99久久人人澡| 午夜国产精品一区| 亚洲第一福利视频在线| 夜夜嗨av一区二区三区网页| 亚洲欧美另类久久久精品2019| 国产精品乱码人人做人人爱 | 日韩一区二区中文字幕| 欧美日韩国产首页| 欧美亚洲综合色| 色狠狠综合天天综合综合| 99精品视频在线免费观看| 99久久综合色| 972aa.com艺术欧美| 97久久超碰国产精品电影| 97精品国产97久久久久久久久久久久 | 国产精品久久久久久久久果冻传媒| 久久久99久久| 亚洲国产精品精华液ab| 国产精品久久久久影院色老大 | 高清久久久久久| 国产激情视频一区二区在线观看| 国产高清精品网站| 成人的网站免费观看| 91在线观看免费视频| 在线观看一区不卡| 56国语精品自产拍在线观看| 欧美一区三区二区| 精品国产91久久久久久久妲己| 亚洲精品在线观看视频| 国产精品久久三| 一级特黄大欧美久久久| 日韩精品视频网站| 国产精品亚洲第一| 91小宝寻花一区二区三区| 欧美日本国产视频| 精品国产第一区二区三区观看体验| 国产午夜精品久久| 一区二区三区产品免费精品久久75| 午夜欧美2019年伦理| 国产一区 二区 三区一级| 福利一区福利二区| 欧美亚洲另类激情小说| 欧美mv日韩mv国产| 亚洲视频你懂的| 男男视频亚洲欧美| 99精品久久只有精品| 欧美一区二区三区不卡| 国产精品不卡一区二区三区|