亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩视频免费直播| 色偷偷久久人人79超碰人人澡| 欧美日韩国产a| 日韩中文字幕不卡| 欧美一区二区大片| 国产suv精品一区二区883| 国产日韩欧美在线一区| 91老司机福利 在线| 亚洲国产视频直播| 精品国产一区二区三区四区四 | 成人欧美一区二区三区小说| 91在线精品一区二区三区| 一区二区三区日韩| 亚洲裸体在线观看| 欧美亚洲综合色| 久久成人免费电影| 中文字幕亚洲精品在线观看| 欧美日韩一区二区三区四区五区| 免费看欧美女人艹b| 欧美激情一区二区三区不卡| 日本精品视频一区二区三区| 蜜桃传媒麻豆第一区在线观看| 久久精品欧美日韩| 在线观看免费一区| 国产一区二区三区蝌蚪| 亚洲免费av网站| 日韩精品一区二区三区中文不卡| 粉嫩aⅴ一区二区三区四区| 亚洲制服丝袜av| 久久人人97超碰com| 欧美三级日韩三级国产三级| 狠狠色丁香婷婷综合| 夜夜嗨av一区二区三区四季av| 精品国产在天天线2019| 在线日韩av片| 国产成人亚洲综合色影视| 亚洲国产精品一区二区久久 | 99精品久久只有精品| 亚洲成年人影院| 亚洲精品伦理在线| 欧美乱妇一区二区三区不卡视频| 国产美女娇喘av呻吟久久| 一区二区在线免费观看| 久久久久久影视| 欧美人与性动xxxx| 一本一本大道香蕉久在线精品| 极品少妇xxxx精品少妇偷拍| 亚洲宅男天堂在线观看无病毒| 亚洲国产精品成人综合 | 成人永久免费视频| 奇米777欧美一区二区| 亚洲最大的成人av| 中文字幕精品一区二区精品绿巨人 | 国产精品理论在线观看| 日韩美女视频在线| 欧美日本免费一区二区三区| 国产iv一区二区三区| 毛片av一区二区| 婷婷开心激情综合| 亚洲香肠在线观看| 亚洲精品欧美激情| 日韩美女视频一区二区| 国产精品久久免费看| 国产亚洲综合av| 国产三级欧美三级| 精品美女在线播放| 欧美r级电影在线观看| 在线不卡免费av| 777久久久精品| 4438x亚洲最大成人网| 欧美日韩国产综合久久| 欧美欧美欧美欧美首页| 欧美日韩一区中文字幕| 欧美天天综合网| 欧美日韩国产高清一区二区三区| 欧美探花视频资源| 欧美性猛交一区二区三区精品| 日本韩国一区二区| 欧美在线一区二区| 欧美精品日韩一区| 日韩一级片网站| 久久综合久久99| 国产网站一区二区| 中文字幕制服丝袜成人av| 国产精品黄色在线观看| 亚洲少妇最新在线视频| 亚洲一区二区视频在线| 天天综合网天天综合色| 久久精品国产色蜜蜜麻豆| 国内国产精品久久| av中文字幕不卡| 91久久一区二区| 91精品在线观看入口| 日韩一级黄色大片| 久久精品视频一区| 中文字幕一区二区日韩精品绯色| 亚洲欧美日韩久久| 亚洲bdsm女犯bdsm网站| 久久国产精品99精品国产| 国产69精品久久777的优势| 99re成人精品视频| 欧美日韩在线播放| 久久一区二区三区国产精品| 国产精品丝袜久久久久久app| 综合欧美亚洲日本| 肉肉av福利一精品导航| 国产黄色成人av| 在线亚洲精品福利网址导航| 日韩你懂的在线播放| 国产精品亲子乱子伦xxxx裸| 亚洲国产综合色| 国产一区二区福利视频| 色噜噜狠狠成人网p站| 欧美一区二区国产| 国产精品视频一二三区| 日韩成人av影视| 不卡一卡二卡三乱码免费网站| 欧美人成免费网站| 国产欧美日韩亚州综合| 亚洲va欧美va国产va天堂影院| 国内外精品视频| 欧美日韩中文字幕一区| 国产欧美一区二区三区鸳鸯浴 | 欧美精品电影在线播放| 国产亚洲婷婷免费| 亚洲成在人线在线播放| 成人午夜精品在线| 51精品久久久久久久蜜臀| 最新日韩在线视频| 极品销魂美女一区二区三区| 欧美亚一区二区| 国产日韩精品一区| 免费在线欧美视频| 欧美中文字幕一区二区三区亚洲| 久久久久久久久久久久久夜| 偷窥少妇高潮呻吟av久久免费| 99久久伊人精品| 久久久久久免费网| 蜜桃av一区二区在线观看| 欧美在线观看视频一区二区| 国产精品视频免费看| 精油按摩中文字幕久久| 91精品国产色综合久久久蜜香臀| 亚洲人成7777| www.色综合.com| 国产欧美一区二区三区网站| 精品亚洲成a人| 制服.丝袜.亚洲.中文.综合| 一区二区三区产品免费精品久久75| 国产成人av影院| 久久久久国产精品厨房| 久久成人久久爱| 日韩视频一区二区三区在线播放 | 午夜精品福利在线| 欧美自拍丝袜亚洲| 亚洲视频在线一区观看| 成人免费视频一区二区| 2020国产精品自拍| 国产最新精品免费| 欧美zozo另类异族| 免费人成精品欧美精品| 69堂成人精品免费视频| 亚洲高清免费观看高清完整版在线观看| 99久久国产综合色|国产精品| 国产欧美精品一区| 成人综合在线观看| 中文字幕成人在线观看| 成人激情小说乱人伦| 国产精品天美传媒沈樵| 波多野结衣在线aⅴ中文字幕不卡| 国产偷v国产偷v亚洲高清| 国产精选一区二区三区| 久久久无码精品亚洲日韩按摩| 国产一区啦啦啦在线观看| 久久综合成人精品亚洲另类欧美 | 午夜精品aaa| 91精品国产欧美一区二区成人 | 99久久免费国产| 亚洲视频图片小说| 欧美吻胸吃奶大尺度电影| 午夜影视日本亚洲欧洲精品| 91精品国产综合久久精品性色| 蜜臀久久99精品久久久久宅男| 日韩视频免费直播| 国产做a爰片久久毛片| 国产婷婷色一区二区三区| 91在线无精精品入口| 亚洲自拍另类综合| 日韩女优电影在线观看| 欧美剧情电影在线观看完整版免费励志电影| 亚洲国产一区视频| 日韩色在线观看| 成人免费电影视频| 亚瑟在线精品视频| 欧美精品一区二区高清在线观看| 成人免费视频caoporn| 亚洲黄一区二区三区| 日韩欧美精品三级| 不卡av在线网| 免费视频一区二区|