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

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

?? redemo.c

?? RSA算法應用程序用于實現數據加密和解密
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*	REDEMO.C - Demo Application using RSAEURO cryptographic toolkit	Copyright (c) J.S.A.Kapp 1994.	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.	This application shows how to use RSAEURO routines in your	applications.*/#include <stdio.h>#include <string.h>#include "rsaeuro.h"		/* Required Prototypes *//* Implement these simple routines as macros */#define ReadClose(file) \{               \	fclose (file);\}#define WriteClose(file) \{                   \	if(file != stdout)\		fclose(file);   \}#define PrintMessage(message) \{                 \	puts(message);  \	fflush(stdout); \}/* Internal function prototypes */static R_RANDOM_STRUCT *InitRandomStruct PROTO_LIST((void));static void DoSignFile PROTO_LIST((void));static void DoVerifyFile PROTO_LIST((void));static void DoSealFile PROTO_LIST((R_RANDOM_STRUCT *));static void DoOpenFile PROTO_LIST((void));static void DoGenerateKeys PROTO_LIST((R_RANDOM_STRUCT *));static void DoOpenkeys PROTO_LIST((void));static void WriteKeypair2 PROTO_LIST((void));static void WriteBigInteger PROTO_LIST	((FILE *, unsigned char *, unsigned int));static int ReadInit PROTO_LIST((FILE **, char *));static int ReadUpdate PROTO_LIST	((FILE *, unsigned char *, unsigned int *, unsigned int));static void ReadFinal PROTO_LIST((FILE *));static int ReadBlock PROTO_LIST	((unsigned char *, unsigned int *, unsigned int, char *));static int WriteInit PROTO_LIST((FILE **, char *));static int WriteUpdate PROTO_LIST((FILE *, unsigned char *, unsigned int));static void WriteFinal PROTO_LIST((FILE *));static int WriteBlock PROTO_LIST((unsigned char *, unsigned int, char *));static int GetPublicKey PROTO_LIST((R_RSA_PUBLIC_KEY **));static int GetPrivateKey PROTO_LIST((R_RSA_PRIVATE_KEY **));static int GetDigestAlgorithm PROTO_LIST((int *));static int GetEncryptionAlgorithm PROTO_LIST((int *));static void PrintMessage PROTO_LIST((char *));static void PrintError PROTO_LIST((char *, int));static int GetCommand PROTO_LIST((char *, unsigned int, char *));static char *upr PROTO_LIST ((char *s));/* Use one key from RSADSI's RSAREF(tm) RDEMO for comptiblity testing.	 This ensures that both RSAEURO and RSAREF(tm) code is compatible.*/static R_RSA_PUBLIC_KEY PUBLIC_KEY1 = {	512,	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0xc0, 0x76, 0x47, 0x97, 0xb8, 0xbe, 0xc8, 0x97,	 0x2a, 0x0e, 0xd8, 0xc9, 0x0a, 0x8c, 0x33, 0x4d, 0xd0, 0x49, 0xad, 0xd0,	 0x22, 0x2c, 0x09, 0xd2, 0x0b, 0xe0, 0xa7, 0x9e, 0x33, 0x89, 0x10, 0xbc,	 0xae, 0x42, 0x20, 0x60, 0x90, 0x6a, 0xe0, 0x22, 0x1d, 0xe3, 0xf3, 0xfc,	 0x74, 0x7c, 0xcf, 0x98, 0xae, 0xcc, 0x85, 0xd6, 0xed, 0xc5, 0x2d, 0x93,	 0xd5, 0xb7, 0x39, 0x67, 0x76, 0x16, 0x05, 0x25},	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01}};static R_RSA_PRIVATE_KEY PRIVATE_KEY1 = {	512,	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0xc0, 0x76, 0x47, 0x97, 0xb8, 0xbe, 0xc8, 0x97,	 0x2a, 0x0e, 0xd8, 0xc9, 0x0a, 0x8c, 0x33, 0x4d, 0xd0, 0x49, 0xad, 0xd0,	 0x22, 0x2c, 0x09, 0xd2, 0x0b, 0xe0, 0xa7, 0x9e, 0x33, 0x89, 0x10, 0xbc,   0xae, 0x42, 0x20, 0x60, 0x90, 0x6a, 0xe0, 0x22, 0x1d, 0xe3, 0xf3, 0xfc,	 0x74, 0x7c, 0xcf, 0x98, 0xae, 0xcc, 0x85, 0xd6, 0xed, 0xc5, 0x2d, 0x93,   0xd5, 0xb7, 0x39, 0x67, 0x76, 0x16, 0x05, 0x25},  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01},  {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x1a, 0xe3, 0x6b, 0x75, 0x22, 0xf6, 0x64, 0x87,	 0xd9, 0xf4, 0x61, 0x0d, 0x15, 0x50, 0x29, 0x0a, 0xc2, 0x02, 0xc9, 0x29,   0xbe, 0xdc, 0x70, 0x32, 0xcc, 0x3e, 0x02, 0xac, 0xf3, 0x7e, 0x3e, 0xbc,	 0x1f, 0x86, 0x6e, 0xe7, 0xef, 0x7a, 0x08, 0x68, 0xd2, 0x3a, 0xe2, 0xb1,   0x84, 0xc1, 0xab, 0xd6, 0xd4, 0xdb, 0x8e, 0xa9, 0xbe, 0xc0, 0x46, 0xbd,	 0x82, 0x80, 0x37, 0x27, 0xf2, 0x88, 0x87, 0x01},	{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0x02, 0xb6, 0x15,		0xfe, 0x15, 0x92, 0x8f, 0x41, 0xb0, 0x2b, 0x58, 0x6b, 0x51, 0xc2, 0xc0,		0x22, 0x60, 0xca, 0x39, 0x68, 0x18, 0xca, 0x4c, 0xba, 0x60, 0xbb, 0x89,		0x24, 0x65, 0xbe, 0x35},	 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xee, 0xb6, 0x0d,		0x54, 0x35, 0x18, 0xb4, 0xac, 0x74, 0x83, 0x4a, 0x05, 0x46, 0xc5, 0x07,		0xf2, 0xe9, 0x1e, 0x38, 0x9a, 0x87, 0xe2, 0xf2, 0xbe, 0xcc, 0x6f, 0x8c,		0x67, 0xd1, 0xc9, 0x31}},	{{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x48, 0x7e, 0x99,		0xe3, 0x75, 0xc3, 0x8d, 0x73, 0x21, 0x12, 0xd9, 0x7d, 0x6d, 0xe8, 0x68,		0x7f, 0xda, 0xfc, 0x5b, 0x6b, 0x5f, 0xb1, 0x6e, 0x72, 0x97, 0xd3, 0xbd,		0x1e, 0x43, 0x55, 0x99},	 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xb5, 0x50, 0xde,		0x64, 0x37, 0x77, 0x4d, 0xb0, 0x57, 0x77, 0x18, 0xed, 0x6c, 0x77, 0x07,		0x24, 0xee, 0xe4, 0x66, 0xb4, 0x31, 0x14, 0xb5, 0xb6, 0x9c, 0x43, 0x59,		0x1d, 0x31, 0x32, 0x81}},	{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,	 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x4c, 0x79, 0xc4,	 0xb9, 0xbe, 0xa9, 0x7c, 0x25, 0xe5, 0x63, 0xc9, 0x40, 0x7a, 0x2d, 0x09,	 0xb5, 0x73, 0x58, 0xaf, 0xe0, 0x9a, 0xf6, 0x7d, 0x71, 0xf8, 0x19, 0x8c,	 0xb7, 0xc9, 0x56, 0xb8}};R_RSA_PUBLIC_KEY PUBLIC_KEY2;R_RSA_PRIVATE_KEY PRIVATE_KEY2;int KEYPAIR2_READY = 0;void main(void){	char command[80];	int done = 0;	R_RANDOM_STRUCT *randomStruct;	randomStruct = InitRandomStruct();		/* setup random object */	PrintMessage("REDEMO - Demo Application Using "RSAEURO_IDENT".");	PrintMessage("NOTE: When saving to a file, a filename of \"-\" will output to the screen.");	while(!done) {		PrintMessage("");		PrintMessage("[S] - Sign a file");		PrintMessage("[V] - Verify a signed file");		PrintMessage("[E] - sEal a file");		PrintMessage("[O] - Open a sealed file");		PrintMessage("[G] - Generate a keypair (may take a long time)");		PrintMessage("[L] - Load keypair");		PrintMessage("[Q] - Quit");		GetCommand(command, sizeof (command), "  Enter choice");		upr(command);		switch(*command) {		case '#':			/* entered a comment */			break;		case 'S':			DoSignFile();			break;		case 'V':			DoVerifyFile();			break;		case 'E':			DoSealFile(randomStruct);			break;		case 'O':			DoOpenFile();			break;		case 'G':			DoGenerateKeys(randomStruct);			break;		case 'L':			DoOpenkeys();			break;		case '\0':		case 'Q':			done = 1;			break;		default:			PrintError("ERROR: Unrecognized command.  Try again.", 0);			break;		}	}	R_RandomFinal(randomStruct);	R_memset((POINTER)&PRIVATE_KEY2, 0, sizeof(PRIVATE_KEY2));}/*	Initialize the random structure with all NULL seed bytes for	test purposes.  This will NOT produce a random stream, for a	random stream one needs a random seed.	See: R_RandomCreate*/static R_RANDOM_STRUCT *InitRandomStruct(void){	static unsigned char seedByte = 0;	unsigned int bytesNeeded;	static R_RANDOM_STRUCT randomStruct;	R_RandomInit(&randomStruct);	/* Initialize with all zero seed bytes, which will not yield an actual			 random number output. */	while (1) {		R_GetRandomBytesNeeded(&bytesNeeded, &randomStruct);		if(bytesNeeded == 0)			break;		R_RandomUpdate(&randomStruct, &seedByte, 1);	}	return(&randomStruct);}/*	Signs user specified file using chosen private key and	Digestalgorithm.*/static void DoSignFile(void){	FILE *file;	R_RSA_PRIVATE_KEY *privateKey;	R_SIGNATURE_CTX context;	int digestAlgorithm, status;	unsigned char partIn[24], signature[MAX_SIGNATURE_LEN];	unsigned int partInLen, signatureLen;	status = 0;	if(ReadInit(&file, "  Enter filename of content to sign"))		return;	if(GetPrivateKey(&privateKey) && GetDigestAlgorithm(&digestAlgorithm))		if((status = R_SignInit(&context, digestAlgorithm)) == 0) {			while(!ReadUpdate(file, partIn, &partInLen, sizeof (partIn)))				if((status = R_SignUpdate(&context, partIn, partInLen)) != 0)					break;			if(!status)				if((status = R_SignFinal(&context, signature, &signatureLen, privateKey)) == 0)					WriteBlock(signature, signatureLen, "  Enter filename to save the signature");		}	ReadClose(file);	if(status)		PrintError ("Signing File", status);	R_memset((POINTER)&context, 0, sizeof(context));	R_memset((POINTER)partIn, 0, sizeof(partIn));}static void DoVerifyFile(void){	FILE *file;	R_RSA_PUBLIC_KEY *publicKey;	R_SIGNATURE_CTX context;	int digestAlgorithm, status;	unsigned char partIn[16], signature[MAX_SIGNATURE_LEN];	unsigned int partInLen, signatureLen;	status = 0;	if(ReadInit(&file, "  Enter name of file to verify"))		return;	if(GetPublicKey (&publicKey) && GetDigestAlgorithm (&digestAlgorithm))		if(!ReadBlock(signature, &signatureLen, sizeof (signature), "  Enter filename of signature")) {			if((status = R_VerifyInit(&context, digestAlgorithm)) == 0)				while(!ReadUpdate(file, partIn, &partInLen, sizeof (partIn)))					if ((status = R_VerifyUpdate(&context, partIn, partInLen)) != 0)						break;			if(!status)				if((status = R_VerifyFinal(&context, signature, signatureLen, publicKey)) == 0)					PrintMessage ("Signature verified.");		}	ReadClose (file);	if(status)		PrintError("Verifying File", status);	R_memset((POINTER)&context, 0, sizeof(context));	R_memset((POINTER)partIn, 0, sizeof(partIn));}static void DoSealFile(randomStruct)R_RANDOM_STRUCT *randomStruct;{	FILE *inFile, *outFile;	R_ENVELOPE_CTX context;	R_RSA_PUBLIC_KEY *publicKey;	int encryptionAlgorithm, status;	unsigned char encryptedKey[MAX_ENCRYPTED_KEY_LEN], *encryptedKeys[1],		iv[8], partIn[24], partOut[31];	unsigned int encryptedKeyLen, partInLen, partOutLen;	status = 0;	if(ReadInit(&inFile, "  Enter filename of content to seal"))		return;	if(WriteInit(&outFile, "  Enter filename to save the encrypted content")) {		ReadClose(inFile);		return;	}	if(GetPublicKey(&publicKey) && GetEncryptionAlgorithm (&encryptionAlgorithm)) {		encryptedKeys[0] = encryptedKey;		if((status = R_SealInit(&context, encryptedKeys, &encryptedKeyLen, iv, 1, &publicKey,					encryptionAlgorithm, randomStruct)) == 0) {			while(!ReadUpdate (inFile, partIn, &partInLen, sizeof (partIn))) {				if ((status = R_SealUpdate(&context, partOut, &partOutLen, partIn, partInLen)) != 0)					break;				WriteUpdate (outFile, partOut, partOutLen);			}			if(!status) {				if((status = R_SealFinal (&context, partOut, &partOutLen)) == 0)					WriteUpdate(outFile, partOut, partOutLen);				if(!WriteBlock(encryptedKey, encryptedKeyLen, "  Enter filename to save the encrypted key"))					WriteBlock(iv, 8, "  Enter filename to save the initializing vector");			}		}	}	ReadClose(inFile);	WriteClose(outFile);	if(status)		PrintError ("sealing file", status);	R_memset((POINTER)&context, 0, sizeof(context));	R_memset((POINTER)partIn, 0, sizeof(partIn));}static void DoOpenFile(void){	FILE *inFile, *outFile;	R_ENVELOPE_CTX context;	R_RSA_PRIVATE_KEY *privateKey;	int encryptionAlgorithm, status;	unsigned char encryptedKey[MAX_ENCRYPTED_KEY_LEN], iv[8], partIn[24],		partOut[31];	unsigned int encryptedKeyLen, ivLen, partInLen, partOutLen;	status = 0;	if (ReadInit(&inFile, "  Enter filename of encrypted content to open"))		return;	if (WriteInit(&outFile, "  Enter filename to save the recovered content")) {		ReadClose(inFile);		return;	}	if(GetPrivateKey(&privateKey) && GetEncryptionAlgorithm(&encryptionAlgorithm))		if(!ReadBlock(encryptedKey, &encryptedKeyLen, sizeof (encryptedKey), "  Enter filename of the encrypted key"))			if(!ReadBlock(iv, &ivLen, 8, "  Enter filename of the initializing vector"))				if((status = R_OpenInit(&context, encryptionAlgorithm, encryptedKey, encryptedKeyLen, iv,					privateKey)) == 0) {					while (!ReadUpdate(inFile, partIn, &partInLen, sizeof (partIn))) {						if((status = R_OpenUpdate(&context, partOut, &partOutLen, partIn, partInLen)) != 0)							break;						WriteUpdate(outFile, partOut, partOutLen);					}					if(!status)						if((status = R_OpenFinal(&context, partOut, &partOutLen)) == 0)							WriteUpdate(outFile, partOut, partOutLen);				}	ReadClose(inFile);	WriteClose(outFile);	if(status)		PrintError("Opening File", status);	R_memset((POINTER)&context, 0, sizeof(context));	R_memset((POINTER)partOut, 0, sizeof(partOut));}static void DoGenerateKeys(randomStruct)R_RANDOM_STRUCT *randomStruct;{	R_RSA_PROTO_KEY protoKey;	char command[80];	int status, keySize;	if(GetCommand(command, sizeof(command), "  Enter Key Size in bits (508 - 1024)")) {		sscanf(command, "%d", &protoKey.bits);		protoKey.useFermat4 = 1;		status = R_GeneratePEMKeys(&PUBLIC_KEY2, &PRIVATE_KEY2, &protoKey, randomStruct);		if(status) {			PrintError("Key Generation", status);			return;		}		PrintMessage("  Public key 2 and private key 2 are now ready to use.");		KEYPAIR2_READY = 1;		WriteKeypair2();	}}static void DoOpenkeys(void){	FILE *file;	char filename[256];	while(1) {		if(!GetCommand(filename, sizeof (filename), "  Enter filename of file for the keypair"))			return;		if (filename[0] == '-' && filename[1] == '\0') {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
3751色影院一区二区三区| 亚洲制服丝袜av| 亚洲激情六月丁香| 欧美日韩国产综合一区二区三区 | 国产精品久久免费看| 三级精品在线观看| av影院午夜一区| 欧美精品一区在线观看| 亚洲成人资源网| 91看片淫黄大片一级在线观看| 欧美精品电影在线播放| 亚洲免费观看在线观看| 高清在线观看日韩| 亚洲精品一区二区三区香蕉| 亚洲va欧美va人人爽| 色综合久久久久| 国产精品青草久久| 国产成人在线免费观看| 欧美va日韩va| 久久国产乱子精品免费女| 欧美日韩国产综合视频在线观看| 亚洲精品乱码久久久久久久久 | 6080国产精品一区二区| 亚洲制服丝袜av| 色成年激情久久综合| 国产精品国模大尺度视频| 成人免费视频视频在线观看免费 | 91精品麻豆日日躁夜夜躁| 一区二区三区资源| 色天天综合久久久久综合片| 国产精品第13页| 99久久久精品免费观看国产蜜| 国产精品乱子久久久久| 成人福利视频在线| 中文字幕乱码亚洲精品一区| 国产成人亚洲综合色影视| 国产亚洲午夜高清国产拍精品 | 欧美一区二区在线观看| 日本欧美一区二区在线观看| 欧美精品久久99| 蜜臀99久久精品久久久久久软件| 日韩美一区二区三区| 国产精品1区二区.| 国产精品美女久久久久久久| 色综合天天视频在线观看 | 国产欧美一区二区三区鸳鸯浴| 国产美女精品在线| 国产精品视频一二| 色婷婷久久久亚洲一区二区三区| 亚洲国产精品久久久男人的天堂| 777久久久精品| 国产酒店精品激情| 国产精品伦理一区二区| 91电影在线观看| 美女任你摸久久| 国产日韩精品一区| 欧美亚洲国产bt| 蜜臀av一区二区在线免费观看 | 国产九色精品成人porny| 国产精品久久久一区麻豆最新章节| 成人免费视频视频在线观看免费| 依依成人精品视频| 欧美成人午夜电影| 成人av免费在线| 日本aⅴ免费视频一区二区三区 | 4438成人网| 成人天堂资源www在线| 午夜精品福利久久久| 久久久www成人免费毛片麻豆| 99久久精品免费观看| 免费高清不卡av| 亚洲三级视频在线观看| 日韩欧美国产综合一区| 色诱视频网站一区| 国产美女av一区二区三区| 亚洲高清视频的网址| 久久久久久久久蜜桃| 欧美美女直播网站| 国产精品影视在线| 日韩精品一区第一页| 中文字幕一区二区三| 欧美大肚乱孕交hd孕妇| 色猫猫国产区一区二在线视频| 久久精品久久综合| 亚洲精品国产一区二区三区四区在线| 欧美一区日韩一区| 在线观看日韩精品| 成人午夜激情片| 麻豆高清免费国产一区| 亚洲制服丝袜av| 国产精品久久久久久福利一牛影视 | 欧美亚洲综合一区| av电影一区二区| 国产一二三精品| 久久精品理论片| 欧美aaaaaa午夜精品| 亚洲激情图片小说视频| 最新国产成人在线观看| 国产片一区二区三区| 亚洲午夜国产一区99re久久| 国产清纯在线一区二区www| 精品美女在线播放| 欧美xfplay| 日韩欧美一二三四区| 欧美高清视频在线高清观看mv色露露十八 | 欧美成人video| 91麻豆精品国产91久久久久久久久| 色婷婷综合中文久久一本| 国产成人精品免费一区二区| 国内欧美视频一区二区 | 精品一区二区三区免费毛片爱| 首页国产丝袜综合| 亚洲第一激情av| 亚洲国产精品麻豆| 午夜成人免费视频| 日韩avvvv在线播放| 日本亚洲电影天堂| 蜜乳av一区二区| 精品一区二区三区在线观看国产| 蜜芽一区二区三区| 国内精品视频666| 国产一区二区三区免费| 国产传媒久久文化传媒| 成人免费毛片a| 色综合久久中文字幕| 91国内精品野花午夜精品| 欧美色图片你懂的| 4438x成人网最大色成网站| 日韩欧美在线综合网| 国产亚洲欧美激情| 一区在线中文字幕| 亚洲午夜电影网| 日韩av中文字幕一区二区三区| 青青草一区二区三区| 欧美手机在线视频| 欧美区在线观看| 精品国产乱码久久久久久牛牛 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 色综合天天综合狠狠| 欧美日韩免费一区二区三区视频| 欧美一二区视频| 国产人伦精品一区二区| 夜夜夜精品看看| 精彩视频一区二区| 色偷偷一区二区三区| 日韩亚洲欧美综合| 国产精品传媒视频| 日韩av不卡在线观看| 成人综合在线网站| 欧美日韩在线一区二区| 精品国精品国产| 亚洲麻豆国产自偷在线| 日本va欧美va精品发布| 99国产精品一区| 日韩午夜在线观看视频| 亚洲欧美在线另类| 免费精品视频最新在线| 99久久777色| 欧美电影精品一区二区| 亚洲欧美日韩人成在线播放| 婷婷综合另类小说色区| 99久久久精品免费观看国产蜜| 欧美一区二区日韩| 亚洲免费在线电影| 国产九九视频一区二区三区| 欧美性生活大片视频| 国产精品美女久久久久久2018 | 国产成人综合自拍| 欧美福利电影网| 亚洲欧美日韩人成在线播放| 国产一区中文字幕| 欧美日本一道本| 一区二区在线观看不卡| 国产精品亚洲专一区二区三区 | 91最新地址在线播放| 久久品道一品道久久精品| 亚洲v精品v日韩v欧美v专区| 不卡的av在线播放| 久久人人97超碰com| jlzzjlzz亚洲日本少妇| 欧美不卡在线视频| 日韩福利电影在线| 欧美网站一区二区| 一区二区在线观看视频| 99综合电影在线视频| 久久久电影一区二区三区| 麻豆久久久久久久| 欧美一区二区日韩| 五月激情六月综合| 欧美日韩国产电影| 亚洲成人一区在线| 欧美日韩夫妻久久| 午夜激情综合网| 欧美丰满嫩嫩电影| 日本不卡一区二区| 欧美精品在线一区二区| 婷婷综合另类小说色区| 欧美一区二区在线播放| 日本色综合中文字幕| 欧美年轻男男videosbes|