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

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

?? rijndael-test-fst.c

?? Arithmetic for integers of almost rijndael for C and C++. Developed for linux
?? C
?? 第 1 頁 / 共 2 頁
字號:
/** * rijndael-test-fst.c * * @version 3.0 (December 2000) * * Optimised ANSI C code for the Rijndael cipher (now AES) * * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> * @author Paulo Barreto <paulo.barreto@terra.com.br> * * This code is hereby placed in the public domain. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */#ifndef INTERMEDIATE_VALUE_KAT#error "Must #define INTERMEDIATE_VALUE_KAT to generate the Intermediate Value Known Answer Test."#endif /* INTERMEDIATE_VALUE_KAT */#include <assert.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include "rijndael-api-fst.h"#define SUBMITTER "Joan Daemen"static void blockPrint(FILE *fp, const BYTE *block, const char *tag) {	int i;	fprintf (fp, "%s=", tag);	for (i = 0; i < 16; i++) {		fprintf (fp, "%02X", block[i]);	}	fprintf (fp, "\n");	fflush (fp);} /* blockPrint */static void rijndaelVKKAT(FILE *fp, int keyLength) {	int i, j, r;	BYTE block[4*4];	BYTE keyMaterial[320];	BYTE byteVal = (BYTE)'8';	keyInstance keyInst;	cipherInstance cipherInst;#ifdef TRACE_KAT_MCT	printf("Executing Variable-Key KAT (key %d): ", keyLength);	fflush(stdout);#endif /* ?TRACE_KAT_MCT */	fprintf(fp,		"\n"		"==========\n"		"\n"		"KEYSIZE=%d\n"		"\n", keyLength);	fflush(fp);	memset(block, 0, 16);	blockPrint(fp, block, "PT");	memset(keyMaterial, 0, sizeof (keyMaterial));	memset(keyMaterial, '0', keyLength/4);	for (i = 0; i < keyLength; i++) {		keyMaterial[i/4] = byteVal; /* set only the i-th bit of the i-th test key */		r = makeKey(&keyInst, DIR_ENCRYPT, keyLength, keyMaterial);		if (TRUE != r) {			fprintf(stderr,"makeKey error %d\n",r);			exit(-1);		}		fprintf(fp, "\nI=%d\n", i+1);		fprintf(fp, "KEY=%s\n", keyMaterial);		memset(block, 0, 16);		r = cipherInit(&cipherInst, MODE_ECB, NULL);		if (TRUE != r) {			fprintf(stderr,"cipherInit error %d\n",r);			exit(-1);		}		r = blockEncrypt(&cipherInst, &keyInst, block, 128, block);		if (128 != r) {			fprintf(stderr,"blockEncrypt error %d\n",r);			exit(-1);		}		blockPrint(fp, block, "CT");		/* now check decryption: */		makeKey(&keyInst, DIR_DECRYPT, keyLength, keyMaterial);		blockDecrypt(&cipherInst, &keyInst, block, 128, block);		for (j = 0; j < 16; j++) {			assert(block[j] == 0);		}		/* undo changes for the next iteration: */		keyMaterial[i/4] = (BYTE)'0';		byteVal =			(byteVal == '8') ?	'4' :			(byteVal == '4') ?	'2' :			(byteVal == '2') ?	'1' :		/*	(byteVal == '1') */	'8';	}	assert(byteVal == (BYTE)'8');	#ifdef TRACE_KAT_MCT	printf(" done.\n");#endif /* ?TRACE_KAT_MCT */} /* rijndaelVKKAT */static void rijndaelVTKAT(FILE *fp, int keyLength) {	int i;	BYTE block[4*4];	BYTE keyMaterial[320];	keyInstance keyInst;	cipherInstance cipherInst;#ifdef TRACE_KAT_MCT	printf("Executing Variable-Text KAT (key %d): ", keyLength);	fflush(stdout);#endif /* ?TRACE_KAT_MCT */	fprintf(fp,		"\n"		"==========\n"		"\n"		"KEYSIZE=%d\n"		"\n", keyLength);	fflush(fp);	memset(keyMaterial, 0, sizeof (keyMaterial));	memset(keyMaterial, '0', keyLength/4);	makeKey(&keyInst, DIR_ENCRYPT, keyLength, keyMaterial);	fprintf(fp, "KEY=%s\n", keyMaterial);	for (i = 0; i < 128; i++) {		memset(block, 0, 16);		block[i/8] |= 1 << (7 - i%8); /* set only the i-th bit of the i-th test block */		fprintf (fp, "\nI=%d\n", i+1);		blockPrint(fp, block, "PT");		cipherInit(&cipherInst, MODE_ECB, NULL);		blockEncrypt(&cipherInst, &keyInst, block, 128, block);		blockPrint(fp, block, "CT");	}#ifdef TRACE_KAT_MCT	printf(" done.\n");#endif /* ?TRACE_KAT_MCT */}static void rijndaelTKAT(FILE *fp, int keyLength, FILE *in) {	int i, j;	unsigned int s;	BYTE block[4*4], block2[4*4];	BYTE keyMaterial[320];	keyInstance keyInst;	cipherInstance cipherInst;#ifdef TRACE_KAT_MCT	printf("Executing Tables KAT (key %d): ", keyLength);	fflush(stdout);#endif /* ?TRACE_KAT_MCT */	fprintf(fp,		"\n"		"==========\n"		"\n"		"KEYSIZE=%d\n"		"\n", keyLength);	fflush(fp);	memset(keyMaterial, 0, sizeof (keyMaterial));		for (i = 0; i < 64; i++) {		fprintf(fp, "\nI=%d\n", i+1);		for(j = 0; j < keyLength/4; j++) {			fscanf(in, "%c", &keyMaterial[j]);		}		makeKey(&keyInst, DIR_ENCRYPT, keyLength, keyMaterial);				fprintf(fp, "KEY=%s\n", keyMaterial);				for (j = 0; j < 16; j++) {			fscanf(in, "%02x", &s);			block[j] = s;		}		fscanf(in, "%c", (char *)&s);		fscanf(in, "%c", (char *)&s);		blockPrint(fp, block, "PT");		cipherInit(&cipherInst, MODE_ECB, NULL);		blockEncrypt(&cipherInst, &keyInst, block, 128, block2);		blockPrint(fp, block2, "CT");	}	for (i = 64; i < 128; i++) {		fprintf(fp, "\nI=%d\n", i+1);		for(j = 0; j < keyLength/4; j++) {			fscanf(in, "%c", &keyMaterial[j]);		}		makeKey(&keyInst, DIR_DECRYPT, keyLength, keyMaterial);				fprintf(fp, "KEY=%s\n", keyMaterial);				for (j = 0; j < 16; j++) {			fscanf(in, "%02x", &s);			block[j] = s;		}		fscanf(in, "%c", (char *)&s);		fscanf(in, "%c", (char *)&s);		cipherInit(&cipherInst, MODE_ECB, NULL);		blockDecrypt(&cipherInst, &keyInst, block, 128, block2);		blockPrint(fp, block2, "PT");		blockPrint(fp, block, "CT");	}#ifdef TRACE_KAT_MCT	printf(" done.\n");#endif /* ?TRACE_KAT_MCT */}#ifdef INTERMEDIATE_VALUE_KATstatic void rijndaelIVKAT (FILE *fp, int keyLength) {	int i;	BYTE pt[4*4], ct[4*4];	BYTE keyMaterial[320];	keyInstance keyInst;	cipherInstance cipherInst;	char format[10];#ifdef TRACE_KAT_MCT	printf ("Executing Intermediate value KAT (key %d): ", keyLength);	fflush (stdout);#endif /* ?TRACE_KAT_MCT */	fprintf(fp,		"\n"		"==========\n"		"\n"		"KEYSIZE=%d\n",		keyLength);	fflush(fp);	memset(keyMaterial, 0, sizeof (keyMaterial));	for (i = 0; i < keyLength/8; i++) {		sprintf(&keyMaterial[2*i], "%02X", i);	}	fprintf(fp, "KEY=%s\n", keyMaterial);		for (i = 0; i < 16; i++) {		pt[i] = i;	}		fprintf(fp, "\nIntermediate Ciphertext Values (Encryption)\n\n");	makeKey(&keyInst, DIR_ENCRYPT, keyLength, keyMaterial);	blockPrint(fp, pt, "PT");	cipherInit(&cipherInst, MODE_ECB, NULL);	for(i = 1; i < keyInst.Nr; i++) {		cipherUpdateRounds(&cipherInst, &keyInst, pt, 16, ct, i);		sprintf(format, "CT%d", i);		blockPrint(fp, ct, format);	}	cipherUpdateRounds(&cipherInst, &keyInst, pt, 16, ct, keyInst.Nr);	blockPrint(fp, ct, "CT");		fprintf(fp, "\nIntermediate Ciphertext Values (Decryption)\n\n");	makeKey(&keyInst, DIR_DECRYPT, keyLength, keyMaterial);	blockPrint(fp, ct, "CT");	cipherInit(&cipherInst, MODE_ECB, NULL);	for(i = 1; i < keyInst.Nr; i++) {		cipherUpdateRounds(&cipherInst, &keyInst, ct, 16, pt, i);		sprintf(format, "PT%d", i);		blockPrint(fp, pt, format);	}	cipherUpdateRounds(&cipherInst, &keyInst, ct, 16, pt, keyInst.Nr);	blockPrint(fp, pt, "PT");	#ifdef TRACE_KAT_MCT	printf(" done.\n");#endif }#endif /* INTERMEDIATE_VALUE_KAT */static void makeKATs(const char *vkFile, const char *vtFile, const char *tblFile, const char *ivFile) {	FILE *fp, *fp2;	/* prepare Variable Key Known Answer Tests: */	fp = fopen(vkFile, "w");	fprintf(fp,		"\n"		"=========================\n"		"\n"		"FILENAME:  \"%s\"\n"		"\n"		"Electronic Codebook (ECB) Mode\n"		"Variable Key Known Answer Tests\n"		"\n"		"Algorithm Name: Rijndael\n"		"Principal Submitter: %s\n",		vkFile, SUBMITTER);	fflush(fp);	rijndaelVKKAT(fp, 128);	rijndaelVKKAT(fp, 192);	rijndaelVKKAT(fp, 256);	fprintf(fp,		"\n"		"==========");	fclose(fp);	/* prepare Variable Text Known Answer Tests: */	fp = fopen(vtFile, "w");	fprintf(fp,		"\n"		"=========================\n"		"\n"		"FILENAME:  \"%s\"\n"		"\n"		"Electronic Codebook (ECB) Mode\n"		"Variable Text Known Answer Tests\n"		"\n"		"Algorithm Name: Rijndael\n"		"Principal Submitter: %s\n",		vtFile, SUBMITTER);	fflush(fp);	rijndaelVTKAT(fp, 128);	rijndaelVTKAT(fp, 192);	rijndaelVTKAT(fp, 256);	fprintf(fp,		"\n"		"==========");	fclose(fp);	/* prepare Tables Known Answer Tests: */	fp = fopen(tblFile, "w");	fprintf(fp,	    "/* Description of what tables are tested:\n"		"   The provided implementations each use a different set of tables\n"		"    - Java implementation: uses no tables\n"		"    - reference C implementation: uses Logtable, Alogtable, S, Si, rcon\n"		"    - fast C implementation: uses rcon and additionally\n"		"        Te0, Te1, Te2, Te3, Te4, Td0, Td1, Td2, Td3, Td4.\n"		"   All these tables are tested.\n"		"\n"		"=========================\n"		"\n"		"FILENAME:  \"%s\"\n"		"\n"		"Electronic Codebook (ECB) Mode\n"		"Tables Known Answer Tests\n"		"\n"		"Algorithm Name: Rijndael\n"		"Principal Submitter: %s\n",		tblFile, SUBMITTER);	fflush(fp);	if (NULL != (fp2 = fopen("table.128", "r"))) {		rijndaelTKAT(fp, 128, fp2);		fclose(fp2);	} else {		printf("Table Known Answer test expects file table.128\n");		fclose(fp);		exit(EXIT_FAILURE);	}	if (NULL != (fp2 = fopen("table.192", "r"))) {		rijndaelTKAT(fp, 192, fp2);		fclose(fp2);	} else {		printf("Table Known Answer test expects file table.192\n");		fclose(fp);		exit(EXIT_FAILURE);			}	if (NULL != (fp2 = fopen("table.256", "r"))) {		rijndaelTKAT(fp, 256, fp2);		fclose(fp2);	} else {		printf("Table Known Answer test expects file table.192\n");		fclose(fp);		exit(EXIT_FAILURE);	}		fprintf(fp,		"\n"		"==========");	fclose(fp);#ifdef INTERMEDIATE_VALUE_KAT	/* prepare Intermediate Values Known Answer Tests: */	fp = fopen(ivFile, "w");	fprintf(fp,		"\n"		"=========================\n"		"\n"		"FILENAME:  \"%s\"\n"		"\n"		"Electronic Codebook (ECB) Mode\n"		"Intermediate Value Known Answer Tests\n"		"\n"		"Algorithm Name: Rijndael\n"		"Principal Submitter: %s\n",		ivFile, SUBMITTER);	fflush(fp);	rijndaelIVKAT(fp, 128);	rijndaelIVKAT(fp, 192);	rijndaelIVKAT(fp, 256);	fprintf(fp,		"\n"		"==========");	fclose(fp);#endif /* INTERMEDIATE_VALUE_KAT */}static void rijndaelECB_MCT(FILE *fp, int keyLength, BYTE direction) {	int i, j;	BYTE inBlock[4*4], outBlock[4*4], binKey[4*MAXKC];	BYTE keyMaterial[320];	keyInstance keyInst;	cipherInstance cipherInst;#ifdef TRACE_KAT_MCT	int width = 0;	clock_t elapsed = -clock();	printf("Executing ECB MCT (%s, key %d): ",		direction == DIR_ENCRYPT ? "ENCRYPT" : "DECRYPT", keyLength);	fflush(stdout);#endif /* ?TRACE_KAT_MCT */	fprintf(fp,		"\n"		"=========================\n"		"\n"		"KEYSIZE=%d\n", keyLength);	fflush(fp);	memset(outBlock, 0, 16);	memset(binKey, 0, keyLength/8);	for (i = 0; i < 400; i++) {#ifdef TRACE_KAT_MCT                         while (width-- > 0) {        	putchar('\b');        }        width = printf("%d", i);        fflush(stdout);    #endif /* ?TRACE_KAT_MCT */		fprintf(fp, "\nI=%d\n", i);		/* prepare key: */		for (j = 0; j < keyLength/8; j++) {			sprintf(&keyMaterial[2*j], "%02X", binKey[j]);		}		keyMaterial[keyLength/4] = 0;		fprintf(fp, "KEY=%s\n", keyMaterial);		makeKey(&keyInst, direction, keyLength, keyMaterial);		/* do encryption/decryption: */		blockPrint(fp, outBlock, direction == DIR_ENCRYPT ? "PT" : "CT");		cipherInit(&cipherInst, MODE_ECB, NULL);		if (direction == DIR_ENCRYPT) {			for (j = 0; j < 10000; j++) {				memcpy(inBlock, outBlock, 16);				blockEncrypt(&cipherInst, &keyInst, inBlock, 128, outBlock);			}		} else {			for (j = 0; j < 10000; j++) {				memcpy(inBlock, outBlock, 16);				blockDecrypt(&cipherInst, &keyInst, inBlock, 128, outBlock);			}		}		blockPrint(fp, outBlock, direction == DIR_ENCRYPT ? "CT" : "PT");		/* prepare new key: */		switch (keyLength) {		case 128:			for (j = 0; j < 128/8; j++) {				binKey[j] ^= outBlock[j];			}			break;		case 192:			for (j = 0; j < 64/8; j++) {				binKey[j] ^= inBlock[j + 64/8];			}			for (j = 0; j < 128/8; j++) {				binKey[j + 64/8] ^= outBlock[j];			}			break;		case 256:			for (j = 0; j < 128/8; j++) {				binKey[j] ^= inBlock[j];			}			for (j = 0; j < 128/8; j++) {				binKey[j + 128/8] ^= outBlock[j];			}			break;		}	}#ifdef TRACE_KAT_MCT	elapsed += clock();    while (width-- > 0) {    	putchar('\b');    }	printf("%d done (%.1f s).\n", i, (float)elapsed/CLOCKS_PER_SEC);#endif /* ?TRACE_KAT_MCT */} /* rijndaelECB_MCT */static void rijndaelCBC_MCT(FILE *fp, int keyLength, BYTE direction) {	int i, j, r, t;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91影院在线观看| 在线不卡欧美精品一区二区三区| 欧美一区二区在线观看| 亚洲综合精品自拍| 在线免费观看视频一区| 亚洲一二三四区不卡| 欧美在线观看一区| 日本sm残虐另类| 精品国产成人在线影院| 国产寡妇亲子伦一区二区| 欧美国产精品一区| 色婷婷久久久久swag精品| 亚洲图片欧美一区| 精品国产伦一区二区三区免费| 国内精品久久久久影院一蜜桃| 久久色成人在线| 99久久精品情趣| 亚洲国产一区二区三区青草影视 | 免费观看在线色综合| 免费在线观看一区| 色婷婷久久综合| 欧美xfplay| 国产99久久精品| 亚洲观看高清完整版在线观看 | 精品久久久久久亚洲综合网| 国产一区二区成人久久免费影院| 国产精品毛片高清在线完整版| 在线观看免费一区| 国精产品一区一区三区mba桃花| 国产精品久久一级| 日韩一区二区视频在线观看| 国产乱一区二区| 亚洲不卡一区二区三区| 精品欧美乱码久久久久久| av一区二区久久| 久久黄色级2电影| 亚洲一区电影777| 国产无人区一区二区三区| 在线观看视频91| 国产99久久久国产精品潘金 | 国产欧美日韩另类视频免费观看| 欧美亚洲国产怡红院影院| 久久国产尿小便嘘嘘| 亚洲一区在线电影| 久久精品视频网| 日韩午夜激情av| 色欲综合视频天天天| 国产一区二区视频在线播放| 亚洲小少妇裸体bbw| 国产精品视频免费看| 欧美一区三区二区| 在线免费观看日本一区| 丰满岳乱妇一区二区三区| 免费亚洲电影在线| 亚洲第一综合色| 亚洲视频一二区| 日本一区二区成人| 久久综合色一综合色88| 91精品国产色综合久久不卡电影 | 日韩国产欧美在线视频| 亚洲精品免费一二三区| 久久久91精品国产一区二区精品| 欧美电影在哪看比较好| 欧美在线一区二区| 91视频免费看| 99久久国产综合精品女不卡| 国产精品一区二区在线观看不卡 | 国产欧美视频在线观看| 精品国产一二三区| 日韩一区二区三| 欧美一区二区三区视频免费| 欧美手机在线视频| 在线观看网站黄不卡| 99热99精品| 91影院在线观看| 91免费精品国自产拍在线不卡| 国v精品久久久网| 成人av在线一区二区| 成人一区二区三区视频| 成人激情校园春色| 麻豆精品新av中文字幕| 中文字幕亚洲不卡| 韩国中文字幕2020精品| 日韩avvvv在线播放| 久久亚洲精品小早川怜子| 国产在线精品不卡| 黄一区二区三区| 国产一区二区三区观看| 国产一区二区在线看| 福利电影一区二区三区| 不卡的看片网站| 91免费视频网| 欧美日韩激情一区二区| 欧美日韩免费一区二区三区 | 亚洲久本草在线中文字幕| 一区在线中文字幕| 一区二区三区四区不卡视频| 亚洲永久精品国产| 午夜精品久久久久久久99樱桃| 日韩精品亚洲一区| 麻豆freexxxx性91精品| 激情欧美一区二区三区在线观看| 国产九色sp调教91| 成人av电影免费在线播放| 91蝌蚪porny| 欧美一区二区三区电影| 国产亚洲一本大道中文在线| 中文字幕免费一区| 亚洲国产日韩一区二区| 久久精品国产亚洲5555| 99久久精品99国产精品| 3d动漫精品啪啪| 国产日韩欧美亚洲| 亚洲午夜在线视频| 国产一区二区在线视频| 色哟哟一区二区| 欧美va在线播放| 亚洲丝袜自拍清纯另类| 视频一区中文字幕国产| 国产精品69久久久久水密桃| 91黄色激情网站| 久久品道一品道久久精品| 一区二区三区高清在线| 精品在线一区二区| 99re视频精品| 精品美女一区二区三区| 亚洲精品一二三| 国产伦精品一区二区三区在线观看| 播五月开心婷婷综合| 日韩欧美一级精品久久| 亚洲欧洲精品成人久久奇米网| 日本午夜一本久久久综合| 91色porny在线视频| 精品久久久久久久人人人人传媒| 亚洲精品videosex极品| 国产精品996| 精品国产91洋老外米糕| 亚洲一区二区三区国产| 国产成人在线色| 欧美成人在线直播| 首页国产欧美久久| 色婷婷av一区二区三区软件| 亚洲国产成人自拍| 韩国一区二区在线观看| 欧美一区二区三区视频在线| 一区二区三区精品视频| 99精品欧美一区二区蜜桃免费 | 欧美电视剧免费观看| 亚洲一区二区三区四区在线免费观看| 国产一区视频在线看| 7777精品伊人久久久大香线蕉| 亚洲欧美一区二区久久| 国产99久久久国产精品潘金| 久久综合久久综合九色| 国产精品免费aⅴ片在线观看| 一本大道av一区二区在线播放| 国产日韩三级在线| 亚洲欧洲www| 99riav久久精品riav| 国产精品久久久久久亚洲伦 | 久久久久久久久久久久久久久99| 亚洲视频免费在线观看| 国产v日产∨综合v精品视频| 国产性天天综合网| 99精品在线免费| 久久久国产精华| 久久66热偷产精品| 欧美一三区三区四区免费在线看| 亚洲免费观看高清完整版在线观看 | 丝袜美腿成人在线| 色综合天天综合狠狠| 国产欧美日韩另类视频免费观看| 奇米影视一区二区三区| 欧美一区二区三区在线观看视频 | 亚洲综合视频在线| 东方欧美亚洲色图在线| 精品久久一区二区| 国产一二三精品| 精品久久久久久亚洲综合网 | 中文字幕亚洲电影| av毛片久久久久**hd| 国产亚洲欧美色| 午夜日韩在线观看| 欧美日韩亚洲综合一区二区三区 | 欧美高清性hdvideosex| 一区二区三区国产| 欧美一级午夜免费电影| 日韩一区精品字幕| 欧美丰满美乳xxx高潮www| 一区二区三区免费| 欧美一区二区视频免费观看| 免费成人av资源网| 精品国产免费久久| 懂色av一区二区三区蜜臀| 国产精品卡一卡二| 91丝袜国产在线播放| 亚洲人成人一区二区在线观看 | 亚洲bt欧美bt精品| 久久蜜桃av一区精品变态类天堂| 国产精品中文字幕欧美|