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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rsa.c

?? 簡(jiǎn)單的RSA加密范例
?? C
字號(hào):
/*	RSA.C - RSA routines for RSAEURO    Copyright (c) J.S.A.Kapp 1994 - 1996.	RSAEURO - RSA Library compatible with RSAREF(tm) 2.0.	All functions prototypes are the Same as for RSAREF(tm).	To aid compatiblity the source and the files follow the	same naming comventions that RSAREF(tm) uses.  This should aid	direct importing to your applications.	This library is legal everywhere outside the US.  And should	NOT be imported to the US and used there.	All Trademarks Acknowledged.	RSA encryption performed as defined in the PKCS (#1) by RSADSI.	Revision history		0.90 First revision, code produced very similar to that		of RSAREF(tm), still it worked fine.        0.91 Second revision, code altered to aid speeding up.		Used pointer accesses to arrays to speed up some parts,		mainly during the loops.        1.03 Third revision, Random Structure initialization        double check, RSAPublicEncrypt can now return RE_NEED_RANDOM.*/#include "rsaeuro.h"#include "r_random.h"#include "rsa.h"#include "nn.h"static int rsapublicfunc PROTO_LIST((unsigned char *, unsigned int *, unsigned char *, unsigned int, R_RSA_PUBLIC_KEY *));static int rsaprivatefunc PROTO_LIST((unsigned char *, unsigned int *, unsigned char *, unsigned int, R_RSA_PRIVATE_KEY *));/* RSA encryption, according to RSADSI's PKCS #1. */int RSAPublicEncrypt(output, outputLen, input, inputLen, publicKey, randomStruct)unsigned char *output;          // output block unsigned int *outputLen;        // length of output block unsigned char *input;           // input block unsigned int inputLen;          // length of input block R_RSA_PUBLIC_KEY *publicKey;    // RSA public key R_RANDOM_STRUCT *randomStruct;  // random structure {	int status;	unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN];	unsigned int i, modulusLen;	modulusLen = (publicKey->bits + 7) / 8;//	if(inputLen + 11 > modulusLen)//      return(RE_LEN);    R_GetRandomBytesNeeded(&i, randomStruct);    if(i != 0)        return(RE_NEED_RANDOM);	*pkcsBlock = 0;                 // PKCS Block Makeup 		// block type 2 	*(pkcsBlock+1) = 2;	for(i = 2; i < modulusLen - inputLen - 1; i++) {		// Find nonzero random byte. //		do {   // random bytes used to pad the PKCS Block //			R_GenerateBytes(&byte, 1, randomStruct);//		}while(byte == 0);//		*(pkcsBlock+i) = byte;		*(pkcsBlock+i) = 0xff;	}	// separator 	pkcsBlock[i++] = 0;	R_memcpy((POINTER)&pkcsBlock[i], (POINTER)input, inputLen);	status = rsapublicfunc(output, outputLen, pkcsBlock, modulusLen, publicKey);	// Clear sensitive information. 	byte = 0;	R_memset((POINTER)pkcsBlock, 0, sizeof(pkcsBlock));	return(status);}/*int RSAPublicEncrypt(output, outputLen, input, inputLen, publicKey, randomStruct)unsigned char *output;          // output block unsigned int *outputLen;        // length of output block unsigned char *input;           // input block unsigned int inputLen;          // length of input block R_RSA_PUBLIC_KEY *publicKey;    // RSA public key R_RANDOM_STRUCT *randomStruct;  // random structure {	int status;	unsigned char byte, pkcsBlock[MAX_RSA_MODULUS_LEN];	unsigned int i, modulusLen;	modulusLen = (publicKey->bits + 7) / 8;	if(inputLen + 11 > modulusLen)        return(RE_LEN);    R_GetRandomBytesNeeded(&i, randomStruct);    if(i != 0)        return(RE_NEED_RANDOM);	*pkcsBlock = 0;                 // PKCS Block Makeup 		// block type 2 	*(pkcsBlock+1) = 2;	for(i = 2; i < modulusLen - inputLen - 1; i++) {		// Find nonzero random byte. 		do {   // random bytes used to pad the PKCS Block 			R_GenerateBytes(&byte, 1, randomStruct);		}while(byte == 0);		*(pkcsBlock+i) = byte;	}	// separator 	pkcsBlock[i++] = 0;	R_memcpy((POINTER)&pkcsBlock[i], (POINTER)input, inputLen);	status = rsapublicfunc(output, outputLen, pkcsBlock, modulusLen, publicKey);	// Clear sensitive information. 	byte = 0;	R_memset((POINTER)pkcsBlock, 0, sizeof(pkcsBlock));	return(status);}*/// RSA decryption, according to RSADSI's PKCS #1. int RSAPublicDecrypt(output, outputLen, input, inputLen, publicKey)unsigned char *output;          //* output block unsigned int *outputLen;        //* length of output block unsigned char *input;           //* input block unsigned int inputLen;          //* length of input block R_RSA_PUBLIC_KEY *publicKey;    //* RSA public key {	int status;	unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];	unsigned int i, modulusLen, pkcsBlockLen;	modulusLen = (publicKey->bits + 7) / 8;	if(inputLen > modulusLen)		return(RE_LEN);	status = rsapublicfunc(pkcsBlock, &pkcsBlockLen, input, inputLen, publicKey);	if(status)		return(status);	if(pkcsBlockLen != modulusLen)		return(RE_LEN);	/* Require block type 1. */	if((pkcsBlock[0] != 0) || (pkcsBlock[1] != 1))	 return(RE_DATA);	for(i = 2; i < modulusLen-1; i++)		if(*(pkcsBlock+i) != 0xff)			break;	/* separator check */	if(pkcsBlock[i++] != 0)		return(RE_DATA);	*outputLen = modulusLen - i;	if(*outputLen + 11 > modulusLen)		return(RE_DATA);	R_memcpy((POINTER)output, (POINTER)&pkcsBlock[i], *outputLen);	/* Clear sensitive information. */	R_memset((POINTER)pkcsBlock, 0, sizeof(pkcsBlock));	return(ID_OK);}/* RSA encryption, according to RSADSI's PKCS #1. */int RSAPrivateEncrypt(output, outputLen, input, inputLen, privateKey)unsigned char *output;          /* output block */unsigned int *outputLen;        /* length of output block */unsigned char *input;           /* input block */unsigned int inputLen;          /* length of input block */R_RSA_PRIVATE_KEY *privateKey;  /* RSA private key */{	int status;	unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];	unsigned int i, modulusLen;	modulusLen = (privateKey->bits + 7) / 8;	if(inputLen + 11 > modulusLen)		return (RE_LEN);	*pkcsBlock = 0;	/* block type 1 */	*(pkcsBlock+1) = 1;	for (i = 2; i < modulusLen - inputLen - 1; i++)		*(pkcsBlock+i) = 0xff;	/* separator */	pkcsBlock[i++] = 0;	R_memcpy((POINTER)&pkcsBlock[i], (POINTER)input, inputLen);	status = rsaprivatefunc(output, outputLen, pkcsBlock, modulusLen, privateKey);	/* Clear sensitive information. */	R_memset((POINTER)pkcsBlock, 0, sizeof(pkcsBlock));	return(status);}/* RSA decryption, according to RSADSI's PKCS #1. */int RSAPrivateDecrypt(output, outputLen, input, inputLen, privateKey)unsigned char *output;          /* output block */unsigned int *outputLen;        /* length of output block */unsigned char *input;           /* input block */unsigned int inputLen;          /* length of input block */R_RSA_PRIVATE_KEY *privateKey;  /* RSA private key */{	int status;	unsigned char pkcsBlock[MAX_RSA_MODULUS_LEN];	unsigned int i, modulusLen, pkcsBlockLen;	modulusLen = (privateKey->bits + 7) / 8;	if(inputLen > modulusLen)		return (RE_LEN);	status = rsaprivatefunc(pkcsBlock, &pkcsBlockLen, input, inputLen, privateKey);	if(status)		return (status);	if(pkcsBlockLen != modulusLen)		return (RE_LEN);	/* We require block type 2. */	if((*pkcsBlock != 0) || (*(pkcsBlock+1) != 2))	 return (RE_DATA);	for(i = 2; i < modulusLen-1; i++)		/* separator */		if (*(pkcsBlock+i) == 0)			break;	i++;	if(i >= modulusLen)		return(RE_DATA);	*outputLen = modulusLen - i;/*	if(*outputLen + 11 > modulusLen)		return(RE_DATA);*/	R_memcpy((POINTER)output, (POINTER)&pkcsBlock[i], *outputLen);	/* Clear sensitive information. */	R_memset((POINTER)pkcsBlock, 0, sizeof(pkcsBlock));	return(ID_OK);}/* Raw RSA public-key operation. Output has same length as modulus.	 Requires input < modulus.*/static int rsapublicfunc(output, outputLen, input, inputLen, publicKey)unsigned char *output;          /* output block */unsigned int *outputLen;        /* length of output block */unsigned char *input;           /* input block */unsigned int inputLen;          /* length of input block */R_RSA_PUBLIC_KEY *publicKey;    /* RSA public key */{	NN_DIGIT c[MAX_NN_DIGITS], e[MAX_NN_DIGITS], m[MAX_NN_DIGITS],		n[MAX_NN_DIGITS];	unsigned int eDigits, nDigits;		/* decode the required RSA function input data */	NN_Decode(m, MAX_NN_DIGITS, input, inputLen);	NN_Decode(n, MAX_NN_DIGITS, publicKey->modulus, MAX_RSA_MODULUS_LEN);	NN_Decode(e, MAX_NN_DIGITS, publicKey->exponent, MAX_RSA_MODULUS_LEN);	nDigits = NN_Digits(n, MAX_NN_DIGITS);	eDigits = NN_Digits(e, MAX_NN_DIGITS);	if(NN_Cmp(m, n, nDigits) >= 0)		return(RE_DATA);	*outputLen = (publicKey->bits + 7) / 8;	/* Compute c = m^e mod n.  To perform actual RSA calc.*/	NN_ModExp (c, m, e, eDigits, n, nDigits);	/* encode output to standard form */	NN_Encode (output, *outputLen, c, nDigits);	/* Clear sensitive information. */	R_memset((POINTER)c, 0, sizeof(c));	R_memset((POINTER)m, 0, sizeof(m));	return(ID_OK);}/* Raw RSA private-key operation. Output has same length as modulus.	 Requires input < modulus.*/static int rsaprivatefunc(output, outputLen, input, inputLen, privateKey)unsigned char *output;          /* output block */unsigned int *outputLen;        /* length of output block */unsigned char *input;           /* input block */unsigned int inputLen;          /* length of input block */R_RSA_PRIVATE_KEY *privateKey;  /* RSA private key */{	NN_DIGIT c[MAX_NN_DIGITS], cP[MAX_NN_DIGITS], cQ[MAX_NN_DIGITS],		dP[MAX_NN_DIGITS], dQ[MAX_NN_DIGITS], mP[MAX_NN_DIGITS],		mQ[MAX_NN_DIGITS], n[MAX_NN_DIGITS], p[MAX_NN_DIGITS], q[MAX_NN_DIGITS],		qInv[MAX_NN_DIGITS], t[MAX_NN_DIGITS];	unsigned int cDigits, nDigits, pDigits;	/* decode required input data from standard form */	NN_Decode(c, MAX_NN_DIGITS, input, inputLen);           /* input */					/* private key data */	NN_Decode(p, MAX_NN_DIGITS, privateKey->prime[0], MAX_RSA_PRIME_LEN);	NN_Decode(q, MAX_NN_DIGITS, privateKey->prime[1], MAX_RSA_PRIME_LEN);	NN_Decode(dP, MAX_NN_DIGITS, privateKey->primeExponent[0], MAX_RSA_PRIME_LEN);	NN_Decode(dQ, MAX_NN_DIGITS, privateKey->primeExponent[1], MAX_RSA_PRIME_LEN);	NN_Decode(n, MAX_NN_DIGITS, privateKey->modulus, MAX_RSA_MODULUS_LEN);	NN_Decode(qInv, MAX_NN_DIGITS, privateKey->coefficient, MAX_RSA_PRIME_LEN);		/* work out lengths of input components */    cDigits = NN_Digits(c, MAX_NN_DIGITS);    pDigits = NN_Digits(p, MAX_NN_DIGITS);	nDigits = NN_Digits(n, MAX_NN_DIGITS);	if(NN_Cmp(c, n, nDigits) >= 0)		return(RE_DATA);	*outputLen = (privateKey->bits + 7) / 8;	/* Compute mP = cP^dP mod p  and  mQ = cQ^dQ mod q. (Assumes q has		 length at most pDigits, i.e., p > q.)	*/	NN_Mod(cP, c, cDigits, p, pDigits);	NN_Mod(cQ, c, cDigits, q, pDigits);	NN_AssignZero(mP, nDigits);	NN_ModExp(mP, cP, dP, pDigits, p, pDigits);	NN_AssignZero(mQ, nDigits);	NN_ModExp(mQ, cQ, dQ, pDigits, q, pDigits);	/* Chinese Remainder Theorem:			m = ((((mP - mQ) mod p) * qInv) mod p) * q + mQ.	*/	if(NN_Cmp(mP, mQ, pDigits) >= 0) {		NN_Sub(t, mP, mQ, pDigits);	}else{		NN_Sub(t, mQ, mP, pDigits);		NN_Sub(t, p, t, pDigits);	}	NN_ModMult(t, t, qInv, p, pDigits);	NN_Mult(t, t, q, pDigits);	NN_Add(t, t, mQ, nDigits);	/* encode output to standard form */	NN_Encode (output, *outputLen, t, nDigits);	/* Clear sensitive information. */	R_memset((POINTER)c, 0, sizeof(c));	R_memset((POINTER)cP, 0, sizeof(cP));	R_memset((POINTER)cQ, 0, sizeof(cQ));	R_memset((POINTER)dP, 0, sizeof(dP));	R_memset((POINTER)dQ, 0, sizeof(dQ));	R_memset((POINTER)mP, 0, sizeof(mP));	R_memset((POINTER)mQ, 0, sizeof(mQ));	R_memset((POINTER)p, 0, sizeof(p));	R_memset((POINTER)q, 0, sizeof(q));	R_memset((POINTER)qInv, 0, sizeof(qInv));	R_memset((POINTER)t, 0, sizeof(t));	return(ID_OK);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡的电视剧免费网站有什么| 日韩一卡二卡三卡四卡| 成人免费视频免费观看| 国产精品影视天天线| 韩国精品免费视频| 日韩成人av影视| 免费观看在线色综合| 奇米四色…亚洲| 麻豆国产欧美一区二区三区| 久久99精品一区二区三区三区| 欧美a一区二区| 久久精品国产澳门| 久久99国产精品久久| 国产资源在线一区| 国产精品自拍av| 成人高清免费观看| 色88888久久久久久影院野外 | 不卡av电影在线播放| 国产精品 欧美精品| 粉嫩一区二区三区性色av| 本田岬高潮一区二区三区| 91尤物视频在线观看| 欧美吻胸吃奶大尺度电影| 91麻豆精品国产自产在线观看一区 | 日韩欧美在线不卡| 国产亚洲欧美日韩日本| 国产精品国产三级国产aⅴ入口 | 美腿丝袜亚洲三区| 国产一区二区三区香蕉| 99视频在线精品| 欧美日韩亚洲丝袜制服| 欧美不卡一区二区三区| 中文字幕国产一区| 夜色激情一区二区| 另类人妖一区二区av| 成人一级黄色片| 欧美在线一二三| 精品久久人人做人人爽| 自拍偷拍亚洲激情| 天天综合日日夜夜精品| 国产在线一区观看| 91亚洲国产成人精品一区二三| 欧美日韩精品电影| 国产女主播一区| 亚洲一区欧美一区| 国产九色sp调教91| 在线视频国内自拍亚洲视频| 精品免费日韩av| 综合av第一页| 蜜臀av国产精品久久久久| 成人黄色a**站在线观看| 欧美日韩情趣电影| 久久精品人人做| 亚洲成人7777| 成人av资源在线| 91精品午夜视频| 中文字幕一区在线观看视频| 蜜臀av性久久久久av蜜臀妖精| 国产成人亚洲综合a∨婷婷图片| 欧美日韩午夜精品| 欧美国产视频在线| 日韩av在线播放中文字幕| 成年人国产精品| 26uuu精品一区二区在线观看| 亚洲国产视频a| k8久久久一区二区三区| www激情久久| 亚洲6080在线| 99久久精品免费精品国产| 欧美精品一区二区三区久久久 | 91在线一区二区三区| 日韩三级中文字幕| 一区二区三区视频在线看| 国产精品综合二区| 日韩免费观看高清完整版在线观看| 亚洲一区二区五区| 99免费精品在线| 国产清纯在线一区二区www| 欧美96一区二区免费视频| 色婷婷综合久色| 国产精品成人免费| 高清免费成人av| 精品国产乱码久久久久久免费| 视频一区在线播放| 欧美性xxxxxxxx| 国产精品精品国产色婷婷| 国产精品香蕉一区二区三区| 欧美成人在线直播| 免费在线观看一区| 欧美一区二区精品在线| 亚洲国产精品久久久久婷婷884| 一道本成人在线| 国产精品视频观看| 国产成人精品综合在线观看| 欧美大片顶级少妇| 毛片不卡一区二区| 欧美区视频在线观看| 亚洲动漫第一页| 欧美三级欧美一级| 亚洲成人一区在线| 欧美日本一区二区在线观看| 午夜电影一区二区| 欧美三区在线视频| 亚洲国产日韩a在线播放| 91成人免费网站| 亚洲制服丝袜在线| 欧美日韩精品一区二区天天拍小说| 亚洲一区二区三区三| 欧美日韩一二三区| 视频在线观看一区| 欧美大白屁股肥臀xxxxxx| 久久99精品久久久久久国产越南| 日韩精品综合一本久道在线视频| 久久99蜜桃精品| 国产亚洲综合av| 成人动漫在线一区| 夜色激情一区二区| 欧美一区二区三区免费在线看 | 日本欧美加勒比视频| 日韩免费在线观看| 国产一区欧美二区| 国产精品网友自拍| 色综合网站在线| 一二三四区精品视频| 欧美精品一级二级| 久久国产视频网| 国产日产欧美一区二区三区| 99免费精品视频| 亚洲一区视频在线| 欧美第一区第二区| 成人av片在线观看| 亚洲一区在线视频| 精品国产一区二区在线观看| 成人在线视频首页| 亚洲综合成人网| 欧美一级夜夜爽| 国产福利一区在线| 一区二区三区自拍| 日韩欧美高清在线| 99久久精品国产导航| 亚洲丶国产丶欧美一区二区三区| 日韩精品一区二区三区视频播放| 成人免费av资源| 午夜精品福利一区二区三区av| 精品国产亚洲一区二区三区在线观看| 成人激情开心网| 亚洲国产精品久久久久婷婷884| 欧美成人r级一区二区三区| 99久久免费国产| 秋霞成人午夜伦在线观看| 欧美激情一区二区| 欧美日本一道本| 国产91精品久久久久久久网曝门| 亚洲国产成人av| 久久久不卡网国产精品一区| 欧美在线三级电影| 国产在线精品国自产拍免费| 一区二区三区日韩精品| 精品久久久久av影院| 色婷婷综合激情| 国产一区二区三区在线观看免费 | 欧美—级在线免费片| 欧美男生操女生| 不卡av在线免费观看| 久久99精品一区二区三区| 一区二区三区在线视频播放 | 精品一二三四在线| 亚洲一二三专区| 国产欧美日韩三级| 日韩欧美中文字幕制服| 色婷婷综合久色| 国产a级毛片一区| 免费观看在线综合| 亚洲国产精品久久人人爱蜜臀| 国产欧美va欧美不卡在线| 日韩三级电影网址| 在线精品国精品国产尤物884a| 国产电影精品久久禁18| 日韩福利视频导航| 亚洲黄网站在线观看| 欧美高清在线一区| 精品国产百合女同互慰| 在线播放欧美女士性生活| 91国产丝袜在线播放| 成人avav影音| 国产成人在线色| 国产在线视频一区二区三区| 美女脱光内衣内裤视频久久影院| 一卡二卡三卡日韩欧美| 中文字幕中文字幕一区| 久久久久久久久久久久电影 | 国产精品美女久久久久久久久 | 7777精品伊人久久久大香线蕉最新版 | 色综合久久九月婷婷色综合| 成人激情文学综合网| 国产成a人亚洲| 国产成人精品亚洲777人妖 | 欧美体内she精高潮| 色综合天天综合网天天狠天天| 成人动漫视频在线|