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

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

?? csp.cpp

?? 這個工程主要是非對稱的密鑰的導出和導入 還有就是會話密鑰的操作.
?? CPP
字號:
// Csp.cpp: implementation of the CCsp class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "CSPTEST2.h"
#include "Csp.h"
#include "wincrypt.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCsp::CCsp()
{

}

CCsp::~CCsp()
{

}

/*************************************************************************
+方法名稱:產生并導出會話密鑰
+輸入參數:	BYTE *pbContainer 容器名
+			BYTE *pbPubKey 公鑰數據
+			DWORD dwPubLen 公鑰數據長度
+			BYTE *pbSessionKey 會話密鑰數據
+			DWORD &dwSessionLen 會話密鑰數據長度
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::GenSessionKey(BYTE *pbContainer, BYTE *pbPubKey, DWORD dwPubLen, 
						BYTE *pbSessionKey, DWORD *pdwSessionLen)
{
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;
	HCRYPTKEY hSessionKey;
	
	CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;
	
	int r = CryptImportKey(hProv, pbPubKey, dwPubLen, 0, 0, &hKey);
	if(!r)
	{
		ReportError("GenSessionKey", "導入保護公鑰失敗!", -2);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -2;
	}
	
	//產生會話密鑰
	r = CryptGenKey(hProv, CALG_3DES, CRYPT_EXPORTABLE, &hSessionKey);
	if(!r)
	{
		ReportError("GenSessionKey", "產生會話密鑰失敗!", -3);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		return -3;
	}
	
	//獲得會話密鑰長度
	r = CryptExportKey(hSessionKey, hKey, SIMPLEBLOB, NULL, NULL, pdwSessionLen);
	if(!r)
	{
		ReportError("GenSessionKey", "獲得會話密鑰長度失敗!", -4);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		if(hSessionKey)
			CryptDestroyKey(hSessionKey);
		return -4;
	}
	
	//導出會話密鑰
	r = CryptExportKey(hSessionKey, hKey, SIMPLEBLOB, NULL, pbSessionKey, pdwSessionLen);
	if(!r)
	{
		ReportError("GenSessionKey", "獲得會話密鑰數據失敗!", -5);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		if(hSessionKey)
			CryptDestroyKey(hSessionKey);
		return -5;
	}
	
	if(hProv)
		CryptReleaseContext(hProv, 0);
	if(hKey)
		CryptDestroyKey(hKey);
	if(hSessionKey)
		CryptDestroyKey(hSessionKey);
	
	return 0;
}

/*************************************************************************
+方法名稱:產生RSA密鑰對并導出公鑰私鑰數據
+輸入參數:	int nKeyFlag 密鑰對類型 1 為簽名密鑰對 2 為加密密鑰對
+			BYTE *pbPubKey 公鑰數據(加密公鑰文件.txt 簽名公鑰文件.txt)
+			DWORD dwPubKeyLen 公鑰數據長度
+			BYTE *pbPriKey 私鑰數據(加密私鑰文件.txt 簽名私鑰文件.txt)
+			DWORD &dwSessionLen 會話密鑰數據長度
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::GenRsaKeyPairs(int nKeyFlag, BYTE *pbPubKey, DWORD &dwPubKeyLen, 
										BYTE *pbPriKey, DWORD &dwPriKeyLen)
{
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;
	
	CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;
	
	if(nKeyFlag == 1)
	{
		if(!CryptGenKey(hProv, AT_SIGNATURE, CRYPT_EXPORTABLE, &hKey))
		{
			//刪除容器 釋放上下文
			ReportError("GenRsaKeyPairs", "產生RSA簽名密鑰對失敗!", -2);
			CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
			if(hProv)
				CryptReleaseContext(hProv, 0);
			return -2;
		}
	}
	else if(nKeyFlag == 2)
	{
		if(!CryptGenKey(hProv, AT_KEYEXCHANGE, CRYPT_EXPORTABLE, &hKey))
		{
			//刪除容器 釋放上下文
			ReportError("GenRsaKeyPairs", "產生RSA簽名密鑰對失敗!", -3);
			CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
			if(hProv)
				CryptReleaseContext(hProv, 0);
			return -3;
		}
	}
	else
	{
		CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -4;
	}
	
	//導出私鑰
	DWORD dwTempPriLen;
	
	int r = CryptExportKey(hKey, NULL, PRIVATEKEYBLOB, NULL, NULL, &dwTempPriLen);
	if(!r)
	{
		ReportError("GenRsaKeyPairs", "導出私鑰長度失敗!", -5);
		CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -5;
	}
	
	BYTE *pbTempPriData = (BYTE *)malloc(dwTempPriLen+1);
	
	r = CryptExportKey(hKey, NULL, PRIVATEKEYBLOB, NULL, pbTempPriData, &dwTempPriLen);
	if(!r)
	{
		ReportError("GenRsaKeyPairs", "導出私鑰數據失敗!", -6);
		CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -6;
	}
	
	//導出公鑰
	DWORD dwTempPubLen;
	
	r = CryptExportKey(hKey, NULL, PUBLICKEYBLOB, NULL, NULL, &dwTempPubLen);
	if(!r)
	{
		ReportError("GenRsaKeyPairs", "導出公鑰長度失敗!", -7);
		CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -7;
	}
	
	BYTE *pbTempPubData = (BYTE *)malloc(dwTempPubLen+1);
	
	r = CryptExportKey(hKey, NULL, PUBLICKEYBLOB, NULL, pbTempPubData, &dwTempPubLen);
	if(!r)
	{
		ReportError("GenRsaKeyPairs", "導出公鑰數據失敗!", -8);
		CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -8;
	}
	
	//緩沖區拷貝
	memcpy(pbPriKey, pbTempPriData, dwTempPriLen); //拷貝私鑰數據
	dwPubKeyLen = dwTempPubLen; //私鑰數據長度
	memcpy(pbPubKey, pbTempPubData, dwTempPubLen); //拷貝公鑰數據
	dwPriKeyLen = dwTempPriLen; //公鑰長度
	
	//刪除容器
	CryptAcquireContext(&hProv, "RSA", MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);

	//釋放內存
	if(pbTempPriData)
		free(pbTempPriData);
	if(pbTempPubData)
		free(pbTempPubData);
	if(hProv)
		CryptReleaseContext(hProv, 0);
	
	return 0;
}

void CCsp::ReportError(CString strFunName, CString strErrorDescript, int nErrorNo)
{
	m_strError.Format("出錯函數%s:出錯描述%s:出錯代碼%d", strFunName, strErrorDescript, nErrorNo);
	return;
}

/*************************************************************************
+方法名稱:導入公鑰數據
+輸入參數:	CString strContainer 容器名稱
+			BYTE *pbPubKey 公鑰數據(加密公鑰文件.txt 簽名公鑰文件.txt)
+			DWORD dwPubLen 公鑰數據長度
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::ImportPubKey(CString strContainer, BYTE *pbPubKey, DWORD dwPubLen)
{
	
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;

	CryptAcquireContext(&hProv, strContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, strContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;

	//導入公鑰數據
	int r = CryptImportKey(hProv, pbPubKey, dwPubLen, NULL, NULL, &hKey);
	if(!r)
	{
		ReportError("ImportPubKey", "導入公鑰數據失敗!", -2);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -2;
	}

	if(hProv)
		CryptReleaseContext(hProv, 0);
	return 0;
}

/*************************************************************************
+方法名稱:導入私鑰數據
+輸入參數:	CString strContainer 容器名稱
+			BYTE *pbPriKey 私鑰數據(加密私鑰文件.txt 簽名私鑰文件.txt)
+			DWORD dwPriLen 私鑰數據長度
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::ImportPriKey(CString strContainer, BYTE *pbPriKey, DWORD dwPriLen)
{
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;

	CryptAcquireContext(&hProv, strContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, strContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;

	//導入私鑰數據
	int r = CryptImportKey(hProv, pbPriKey, dwPriLen, NULL, NULL, &hKey);
	if(!r)
	{
		ReportError("ImportPriKey", "導入私鑰數據失敗!", -2);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -2;
	}

	if(hProv)
		CryptReleaseContext(hProv, 0);

	return 0;
}

/*************************************************************************
+方法名稱:會話加密數據
+輸入參數:	BYTE *pbSessionKey 會話密鑰數據 (會話密鑰數據文件.txt)
+			 DWORD dwSessionLen 會話密鑰長度
+			BYTE *pbSourceData 待加密數據 (會話加密原文.txt)
+			DWORD dwSourceLen 待加密數據長度
+			BYTE *pbPriKey 解密私鑰數據 (加密私鑰文件.txt)
+			DWORD dwPriLen 解密私鑰數據長度
+			BYTE *pbDestData 加密后數據 (會話數據加密密文.txt)
+			DWORD &dwDestLen 加密后數據長度
+			CString strContainer 容器名稱
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::SessionEncrypt(BYTE *pbSessionKey, DWORD dwSessionLen, 
						BYTE *pbSourceData, DWORD dwSourceLen, 
						BYTE *pbPriKey, DWORD dwPriLen,
						BYTE *pbDestData,DWORD *pdwDestLen, 
						BYTE *pbContainer)
{
	HCRYPTPROV hProv;
	HCRYPTKEY hSessionKey;
	HCRYPTKEY hKey;
	
	CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;
	
	//導入私鑰到容器中
	int r = CryptImportKey(hProv, pbPriKey, dwPriLen, 0, NULL, &hKey);
	if(!r)
	{
		ReportError("SessionEncrypt", "導入會話解密私鑰失敗!", -2);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -2;
	}
	
	r = CryptImportKey(hProv, pbSessionKey, dwSessionLen, hKey, NULL, &hSessionKey);
	if(!r)
	{
		ReportError("SessionEncrypt", "導入會話密鑰失敗!", -3);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		return -3;
	}
	
	r = CryptEncrypt(hSessionKey, NULL, TRUE, NULL, pbSourceData, &dwSourceLen, 
		dwSourceLen+256);
	if(!r)
	{
		ReportError("SessionEncrypt", "加密數據失敗!", -4);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		if(hSessionKey)
			CryptDestroyKey(hSessionKey);
		return -4;
	}
	
	*pdwDestLen = dwSourceLen;
	memcpy(pbDestData, pbSourceData, dwSourceLen);
	
	if(hProv)
		CryptReleaseContext(hProv, 0);
	if(hSessionKey)
		CryptDestroyKey(hSessionKey);
	if(hKey)
		CryptDestroyKey(hKey);
	return 0;
}


/*************************************************************************
+方法名稱:會話解密數據
+輸入參數:	BYTE *pbSessionKey 會話密鑰數據 (會話密鑰數據文件.txt)
+			 DWORD dwSessionLen 會話密鑰長度
+			BYTE *pbSourceData 待解密數據 (會話數據加密密文.txt)
+			DWORD dwSourceLen 待解密數據長度
+			BYTE *pbPriKey 解密私鑰數據 (加密私鑰文件.txt)
+			DWORD dwPriLen 解密私鑰數據長度
+			BYTE *pbDestData 解密后數據 (會話解密后數據.txt)
+			DWORD &dwDestLen 解密后數據長度
+			CString strContainer 容器名稱
+返回值: 0 成功
+其他說明:	
*************************************************************************/
int CCsp::SessionDecrypt(BYTE *pbSessionKey, DWORD dwSessionLen, 
						 BYTE *pbSourceData, DWORD dwSourceLen, 
						 BYTE *pbPriKey, DWORD dwPriLen, 
						 BYTE *pbDestData, DWORD *pdwDestLen, 
						 BYTE *pbContainer)
{
	HCRYPTPROV hProv;
	HCRYPTKEY hKey;
	HCRYPTKEY hSessionKey;
	
	CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_DELETEKEYSET);
	
	if(!CryptAcquireContext(&hProv, (char *)pbContainer, MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET))
		return -1;
	
	//導入私鑰到容器中
	int r = CryptImportKey(hProv, pbPriKey, dwPriLen, 0, NULL, &hKey);
	if(!r)
	{
		ReportError("SessionEncrypt", "導入會話解密私鑰失敗!", -2);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		return -2;
	}
	
	r = CryptImportKey(hProv, pbSessionKey, dwSessionLen, hKey, NULL, &hSessionKey);
	if(!r)
	{
		ReportError("SessionEncrypt", "導入會話密鑰失敗!", -3);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		return -3;
	}
	
	r = CryptDecrypt(hSessionKey, NULL, TRUE, NULL, pbSourceData, &dwSourceLen);
	if(!r)
	{
		ReportError("SessionEncrypt", "會話解密數據失敗!", -4);
		if(hProv)
			CryptReleaseContext(hProv, 0);
		if(hKey)
			CryptDestroyKey(hKey);
		if(hSessionKey)
			CryptDestroyKey(hSessionKey);
		return -4;
	}
	
	*pdwDestLen = dwSourceLen;
	memcpy(pbDestData, pbSourceData, *pdwDestLen);
	
	if(hProv)
		CryptReleaseContext(hProv, 0);
	if(hSessionKey)
		CryptDestroyKey(hSessionKey);
	if(hKey)
		CryptDestroyKey(hKey);
	return 0;
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品一区二区夜色| 欧美亚一区二区| 91视视频在线观看入口直接观看www | 91精品国产色综合久久不卡蜜臀 | 日韩午夜在线影院| 亚洲欧美激情一区二区| 激情综合网av| 欧美肥妇free| 亚洲综合一二区| zzijzzij亚洲日本少妇熟睡| 337p日本欧洲亚洲大胆色噜噜| 无吗不卡中文字幕| 在线视频中文字幕一区二区| 中文字幕亚洲成人| 不卡的av电影| 日本一区二区成人在线| 精品一区二区三区免费观看| 日韩欧美国产成人一区二区| 日本不卡视频一二三区| 欧美日本在线观看| 亚洲成人av电影| 欧美精品乱人伦久久久久久| 亚洲黄色尤物视频| 日本韩国精品在线| 亚洲午夜在线视频| 欧美日韩激情在线| 亚洲va国产天堂va久久en| 欧美丝袜自拍制服另类| 亚洲成av人影院| 欧美精品18+| 免费看欧美女人艹b| 日韩一区二区三区视频在线观看| 日韩高清不卡在线| 亚洲精品一区二区三区在线观看| 久久精品99国产精品| 精品国产免费久久| 成人性视频免费网站| 国产精品国产自产拍高清av王其| caoporn国产一区二区| 亚洲欧洲av在线| 欧美色图在线观看| 六月丁香婷婷久久| 国产亚洲一区二区在线观看| 国产91精品久久久久久久网曝门| 中文字幕一区二区三区四区| 日本乱码高清不卡字幕| 亚洲va欧美va人人爽| 亚洲精品一区二区在线观看| 成人h动漫精品一区二| 亚洲国产综合人成综合网站| 日韩午夜激情免费电影| 国产福利精品导航| 一区二区三区在线视频观看| 欧美精品成人一区二区三区四区| 国产一区二区伦理| 亚洲日本电影在线| 欧美一二三区在线| 国产一区二区电影| 亚洲综合久久久久| 久久久久久久久久久久电影 | 波多野结衣在线一区| 一区二区三区久久久| 日韩欧美一二区| 成人aa视频在线观看| 亚洲h在线观看| 国产调教视频一区| 91精品国产综合久久精品图片 | 国内不卡的二区三区中文字幕 | 日韩主播视频在线| 国产精品午夜久久| 91精品国产乱码| 99国产精品久久久| 国产乱淫av一区二区三区| 亚洲综合丁香婷婷六月香| 久久人人爽爽爽人久久久| 欧美吻胸吃奶大尺度电影| 国产黄色成人av| 午夜伦理一区二区| 国产精品福利av| 久久婷婷久久一区二区三区| 色悠悠亚洲一区二区| 国产成人综合精品三级| 日韩avvvv在线播放| 亚洲精品ww久久久久久p站| 久久久www免费人成精品| 欧美精品国产精品| 欧美自拍丝袜亚洲| 99久久国产综合精品色伊| 国产精品1区二区.| 精油按摩中文字幕久久| 视频一区二区中文字幕| 亚洲激情校园春色| 亚洲三级久久久| 国产精品福利一区| 国产精品午夜久久| 中文字幕精品一区二区精品绿巨人| 91麻豆精品国产91久久久久久| 欧美视频一区二区三区四区| 99久久精品国产导航| www.日本不卡| 成人中文字幕在线| 粉嫩av一区二区三区在线播放| 久久99精品久久久久久| 日韩av成人高清| 麻豆精品一区二区三区| 日本亚洲一区二区| 日韩激情一二三区| 日韩成人av影视| 久久精品国产精品青草| 麻豆国产欧美日韩综合精品二区| 日韩va欧美va亚洲va久久| 蜜桃一区二区三区在线| 免费国产亚洲视频| 国产在线一区观看| 国产高清在线精品| 成人福利电影精品一区二区在线观看| 国产成人综合亚洲91猫咪| 懂色av中文字幕一区二区三区| 成人综合日日夜夜| 色综合色狠狠天天综合色| 91九色02白丝porn| 欧美日韩视频在线观看一区二区三区 | 久久久久久久久免费| 欧美激情一区二区三区在线| 亚洲国产精品成人综合色在线婷婷| 国产欧美视频一区二区| 国产精品色婷婷久久58| 亚洲欧洲精品成人久久奇米网| 亚洲青青青在线视频| 亚洲成国产人片在线观看| 久久电影网电视剧免费观看| 国产美女一区二区| 91美女视频网站| 这里只有精品视频在线观看| 久久综合久久鬼色| 亚洲欧洲三级电影| 天堂精品中文字幕在线| 国产精品自在在线| 日本精品一区二区三区高清| 7799精品视频| 国产日韩欧美亚洲| 亚洲一卡二卡三卡四卡五卡| 青青草97国产精品免费观看无弹窗版| 国产在线精品一区二区不卡了 | 久久精品99国产精品日本| 成人午夜免费视频| 欧美日韩亚洲高清一区二区| 精品国产乱码久久久久久久久| 国产精品乱码一区二区三区软件 | 高清不卡一二三区| 欧美午夜影院一区| 久久久99久久精品欧美| 亚洲乱码国产乱码精品精98午夜| 麻豆视频观看网址久久| 色综合天天综合网天天看片| 欧美电影免费观看高清完整版在线观看| 久久精品一二三| 亚洲成人av电影| proumb性欧美在线观看| 日韩欧美综合一区| 亚洲另类色综合网站| 狠狠色狠狠色合久久伊人| 欧美日韩一区二区三区高清| 国产日产欧美一区| 蜜臀av一区二区| 欧美特级限制片免费在线观看| 欧美国产精品一区二区三区| 美女精品一区二区| 在线精品视频一区二区三四| 国产精品日产欧美久久久久| 精品一区免费av| 欧美日韩亚洲综合| 亚洲另类春色国产| www.亚洲色图| 中文字幕va一区二区三区| 精品亚洲国产成人av制服丝袜 | 中文字幕一区视频| 国产白丝网站精品污在线入口| 91精品国产综合久久香蕉麻豆| 综合自拍亚洲综合图不卡区| 国产成人在线视频网址| 精品国产免费视频| 乱一区二区av| 日韩免费在线观看| 日本特黄久久久高潮| 欧美男男青年gay1069videost | 亚洲第一二三四区| 99精品视频免费在线观看| 国产日韩欧美综合一区| 久99久精品视频免费观看| 日韩欧美区一区二| 国内外精品视频| 欧美va亚洲va国产综合| 狠狠色丁香久久婷婷综合丁香| 91精品国产综合久久蜜臀| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美一区中文字幕| 老司机精品视频线观看86| 精品国产成人在线影院| 精品亚洲成a人|