青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

網(wǎng)絡軟件開發(fā)

網(wǎng)絡軟件開發(fā),vc ++ 、linux 、asp、sql server 2000 android、iOS

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  5 隨筆 :: 1 文章 :: 45 評論 :: 0 Trackbacks

.h文件

/******************************************************************************
 *  Copyright (C) 2000 by Robert Hubley.                                      *
 *  All rights reserved.                                                      *
 *                                                                            *
 *  This software is provided ``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 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.         *
 *                                                                            *
 ******************************************************************************

 MD5.H - header file for MD5C.C
 
   Port to Win32 DLL by Robert Hubley 1/5/2000

   Original Copyright:

  Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
  rights reserved.

  License to copy and use this software is granted provided that it
  is identified as the "RSA Data Security, Inc. MD5 Message-Digest
  Algorithm" in all material mentioning or referencing this software
  or this function.

  License is also granted to make and use derivative works provided
  that such works are identified as "derived from the RSA Data
  Security, Inc. MD5 Message-Digest Algorithm" in all material
  mentioning or referencing the derived work.
  
  RSA Data Security, Inc. makes no representations concerning either
  the merchantability of this software or the suitability of this
  software for any particular purpose. It is provided "as is"
  without express or implied warranty of any kind.

  These notices must be retained in any copies of any part of this
  documentation and/or software.
*/
/******************************************************************************
 *  Copyright (C) 2000 by Robert Hubley.                                      *
 *  All rights reserved.                                                      *
 *                                                                            *
 *  This software is provided ``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 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.         *
 *                                                                            *
 ******************************************************************************
*/

/******************************************************************************
 *   2002-4-18 Modified by Liguangyi.               *
 *   struct MD5_CTX ==> class MD5_CTX.                  *
 *   Take off the Globals Functions                                           *
 ******************************************************************************
*/

#ifndef _LGY_MD5_H
#define _LGY_MD5_H

/* MD5 Class. */
class MD5_CTX {
public:
 MD5_CTX();
 virtual ~MD5_CTX();
 void MD5Update ( unsigned char *input, unsigned int inputLen);
 void MD5Final (unsigned char digest[16]);

private:
 unsigned long int state[4];     /* state (ABCD) */
 unsigned long int count[2];     /* number of bits, modulo 2^64 (lsb first) */
 unsigned char buffer[64];       /* input buffer */
 unsigned char PADDING[64];  /* What? */

private:
 void MD5Init ();
 void MD5Transform (unsigned long int state[4], unsigned char block[64]);
 void MD5_memcpy (unsigned char* output, unsigned char* input,unsigned int len);
 void Encode (unsigned char *output, unsigned long int *input,unsigned int len);
 void Decode (unsigned long int *output, unsigned char *input, unsigned int len);
 void MD5_memset (unsigned char* output,int value,unsigned int len);
};

#endif

 

 

 

.cpp文件


/******************************************************************************
*  Copyright (C) 2000 by Robert Hubley.                                      *
*  All rights reserved.                                                      *
*                                                                            *
*  This software is provided ``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 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.         *
*                                                                            *
******************************************************************************

 MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm

 Port to Win32 DLL by Robert Hubley 1/5/2000

 Original Copyright:

 Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
 rights reserved.

 License to copy and use this software is granted provided that it
 is identified as the "RSA Data Security, Inc. MD5 Message-Digest
 Algorithm" in all material mentioning or referencing this software
 or this function.
   
 License is also granted to make and use derivative works provided
 that such works are identified as "derived from the RSA Data
 Security, Inc. MD5 Message-Digest Algorithm" in all material
 mentioning or referencing the derived work.
 
 RSA Data Security, Inc. makes no representations concerning either
 the merchantability of this software or the suitability of this
 software for any particular purpose. It is provided "as is"
 without express or implied warranty of any kind.
   
 These notices must be retained in any copies of any part of this
 documentation and/or software.
*/

#include "md5.h"

/* Constants for MD5Transform routine.
*/
#define S11 7
#define S12 12
#define S13 17
#define S14 22
#define S21 5
#define S22 9
#define S23 14
#define S24 20
#define S31 4
#define S32 11
#define S33 16
#define S34 23
#define S41 6
#define S42 10
#define S43 15
#define S44 21

/* F, G, H and I are basic MD5 functions.
*/
#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
#define G(x, y, z) (((x) & (z)) | ((y) & (~z)))
#define H(x, y, z) ((x) ^ (y) ^ (z))
#define I(x, y, z) ((y) ^ ((x) | (~z)))

/* ROTATE_LEFT rotates x left n bits.
*/
#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))

/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4.
Rotation is separate from addition to prevent recomputation.
*/
#define FF(a, b, c, d, x, s, ac) { \
 (a) += F ((b), (c), (d)) + (x) + (unsigned long int)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
 }
#define GG(a, b, c, d, x, s, ac) { \
 (a) += G ((b), (c), (d)) + (x) + (unsigned long int)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
 }
#define HH(a, b, c, d, x, s, ac) { \
 (a) += H ((b), (c), (d)) + (x) + (unsigned long int)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
 }
#define II(a, b, c, d, x, s, ac) { \
 (a) += I ((b), (c), (d)) + (x) + (unsigned long int)(ac); \
 (a) = ROTATE_LEFT ((a), (s)); \
 (a) += (b); \
 }


/* MD5 initialization. Begins an MD5 operation, writing a new context.
*/

MD5_CTX::MD5_CTX()
{
 MD5Init ();
}

MD5_CTX::~MD5_CTX()
{
}

void MD5_CTX::MD5Init ()
{
 this->count[0] = this->count[1] = 0;
 /* Load magic initialization constants.*/
 this->state[0] = 0x67452301;
 this->state[1] = 0xefcdab89;
 this->state[2] = 0x98badcfe;
 this->state[3] = 0x10325476;
 /* Add by Liguangyi */
 MD5_memset(PADDING, 0, sizeof(PADDING));
 *PADDING=0x80;
 //PADDING = {
 // 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 // 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
}

/* MD5 block update operation. Continues an MD5 message-digest
operation, processing another message block, and updating the
context.
*/
void MD5_CTX::MD5Update (unsigned char *input,unsigned int inputLen)
{
 unsigned int i, index, partLen;
 
 /* Compute number of bytes mod 64 */
 index = (unsigned int)((this->count[0] >> 3) & 0x3F);
 
 /* Update number of bits */
 if ((this->count[0] += ((unsigned long int)inputLen << 3))
  < ((unsigned long int)inputLen << 3))
  this->count[1]++;
 this->count[1] += ((unsigned long int)inputLen >> 29);
 
 partLen = 64 - index;
 
 /* Transform as many times as possible.
 */
 if (inputLen >= partLen) {
  MD5_memcpy((unsigned char*)&this->buffer[index],
   (unsigned char*)input, partLen);
  MD5Transform (this->state, this->buffer);
  
  for (i = partLen; i + 63 < inputLen; i += 64)
   MD5Transform (this->state, &input[i]);
  
  index = 0;
 }
 else
  i = 0;
 
 /* Buffer remaining input */
 MD5_memcpy ((unsigned char*)&this->buffer[index], (unsigned char*)&input[i], inputLen-i);
}

/* MD5 finalization. Ends an MD5 message-digest operation, writing the
the message digest and zeroizing the context.
*/
void MD5_CTX::MD5Final (unsigned char digest[16])
{
 unsigned char bits[8];
 unsigned int index, padLen;
 
 /* Save number of bits */
 Encode (bits, this->count, 8);
 
 /* Pad out to 56 mod 64.
 */
 index = (unsigned int)((this->count[0] >> 3) & 0x3f);
 padLen = (index < 56) ? (56 - index) : (120 - index);
 MD5Update ( PADDING, padLen);
 
 /* Append length (before padding) */
 MD5Update (bits, 8);
 /* Store state in digest */
 Encode (digest, this->state, 16);
 
 /* Zeroize sensitive information.
 */
 MD5_memset ((unsigned char*)this, 0, sizeof (*this));
 this->MD5Init();
}

/* MD5 basic transformation. Transforms state based on block.
*/
void MD5_CTX::MD5Transform (unsigned long int state[4], unsigned char block[64])
{
 unsigned long int a = state[0], b = state[1], c = state[2], d = state[3], x[16];
 
 Decode (x, block, 64);
 
 /* Round 1 */
 FF (a, b, c, d, x[ 0], S11, 0xd76aa478); /* 1 */
 FF (d, a, b, c, x[ 1], S12, 0xe8c7b756); /* 2 */
 FF (c, d, a, b, x[ 2], S13, 0x242070db); /* 3 */
 FF (b, c, d, a, x[ 3], S14, 0xc1bdceee); /* 4 */
 FF (a, b, c, d, x[ 4], S11, 0xf57c0faf); /* 5 */
 FF (d, a, b, c, x[ 5], S12, 0x4787c62a); /* 6 */
 FF (c, d, a, b, x[ 6], S13, 0xa8304613); /* 7 */
 FF (b, c, d, a, x[ 7], S14, 0xfd469501); /* 8 */
 FF (a, b, c, d, x[ 8], S11, 0x698098d8); /* 9 */
 FF (d, a, b, c, x[ 9], S12, 0x8b44f7af); /* 10 */
 FF (c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */
 FF (b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */
 FF (a, b, c, d, x[12], S11, 0x6b901122); /* 13 */
 FF (d, a, b, c, x[13], S12, 0xfd987193); /* 14 */
 FF (c, d, a, b, x[14], S13, 0xa679438e); /* 15 */
 FF (b, c, d, a, x[15], S14, 0x49b40821); /* 16 */
 
 /* Round 2 */
 GG (a, b, c, d, x[ 1], S21, 0xf61e2562); /* 17 */
 GG (d, a, b, c, x[ 6], S22, 0xc040b340); /* 18 */
 GG (c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */
 GG (b, c, d, a, x[ 0], S24, 0xe9b6c7aa); /* 20 */
 GG (a, b, c, d, x[ 5], S21, 0xd62f105d); /* 21 */
 GG (d, a, b, c, x[10], S22,  0x2441453); /* 22 */
 GG (c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */
 GG (b, c, d, a, x[ 4], S24, 0xe7d3fbc8); /* 24 */
 GG (a, b, c, d, x[ 9], S21, 0x21e1cde6); /* 25 */
 GG (d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */
 GG (c, d, a, b, x[ 3], S23, 0xf4d50d87); /* 27 */
 GG (b, c, d, a, x[ 8], S24, 0x455a14ed); /* 28 */
 GG (a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */
 GG (d, a, b, c, x[ 2], S22, 0xfcefa3f8); /* 30 */
 GG (c, d, a, b, x[ 7], S23, 0x676f02d9); /* 31 */
 GG (b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */
 
 /* Round 3 */
 HH (a, b, c, d, x[ 5], S31, 0xfffa3942); /* 33 */
 HH (d, a, b, c, x[ 8], S32, 0x8771f681); /* 34 */
 HH (c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */
 HH (b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */
 HH (a, b, c, d, x[ 1], S31, 0xa4beea44); /* 37 */
 HH (d, a, b, c, x[ 4], S32, 0x4bdecfa9); /* 38 */
 HH (c, d, a, b, x[ 7], S33, 0xf6bb4b60); /* 39 */
 HH (b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */
 HH (a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */
 HH (d, a, b, c, x[ 0], S32, 0xeaa127fa); /* 42 */
 HH (c, d, a, b, x[ 3], S33, 0xd4ef3085); /* 43 */
 HH (b, c, d, a, x[ 6], S34,  0x4881d05); /* 44 */
 HH (a, b, c, d, x[ 9], S31, 0xd9d4d039); /* 45 */
 HH (d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */
 HH (c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */
 HH (b, c, d, a, x[ 2], S34, 0xc4ac5665); /* 48 */
 
 /* Round 4 */
 II (a, b, c, d, x[ 0], S41, 0xf4292244); /* 49 */
 II (d, a, b, c, x[ 7], S42, 0x432aff97); /* 50 */
 II (c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */
 II (b, c, d, a, x[ 5], S44, 0xfc93a039); /* 52 */
 II (a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */
 II (d, a, b, c, x[ 3], S42, 0x8f0ccc92); /* 54 */
 II (c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */
 II (b, c, d, a, x[ 1], S44, 0x85845dd1); /* 56 */
 II (a, b, c, d, x[ 8], S41, 0x6fa87e4f); /* 57 */
 II (d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */
 II (c, d, a, b, x[ 6], S43, 0xa3014314); /* 59 */
 II (b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */
 II (a, b, c, d, x[ 4], S41, 0xf7537e82); /* 61 */
 II (d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */
 II (c, d, a, b, x[ 2], S43, 0x2ad7d2bb); /* 63 */
 II (b, c, d, a, x[ 9], S44, 0xeb86d391); /* 64 */
 
 state[0] += a;
 state[1] += b;
 state[2] += c;
 state[3] += d;
 
 /* Zeroize sensitive information.
 */
 MD5_memset ((unsigned char*)x, 0, sizeof (x));
}

/* Encodes input (unsigned long int) into output (unsigned char). Assumes len is
a multiple of 4.
*/
void MD5_CTX::Encode (unsigned char *output, unsigned long int *input,unsigned int len)
{
 unsigned int i, j;
 
 for (i = 0, j = 0; j < len; i++, j += 4) {
  output[j] = (unsigned char)(input[i] & 0xff);
  output[j+1] = (unsigned char)((input[i] >> 8) & 0xff);
  output[j+2] = (unsigned char)((input[i] >> 16) & 0xff);
  output[j+3] = (unsigned char)((input[i] >> 24) & 0xff);
 }
}

/* Decodes input (unsigned char) into output (unsigned long int). Assumes len is
a multiple of 4.
*/
void MD5_CTX::Decode (unsigned long int *output, unsigned char *input, unsigned int len)
{
 unsigned int i, j;
 
 for (i = 0, j = 0; j < len; i++, j += 4)
  output[i] = ((unsigned long int)input[j]) | (((unsigned long int)input[j+1]) << 8) |
  (((unsigned long int)input[j+2]) << 16) | (((unsigned long int)input[j+3]) << 24);
}

/* Note: Replace "for loop" with standard memcpy if possible.
*/

void MD5_CTX::MD5_memcpy (unsigned char* output, unsigned char* input,unsigned int len)
{
 unsigned int i;
 
 for (i = 0; i < len; i++)
  output[i] = input[i];
}

/* Note: Replace "for loop" with standard memset if possible.
*/
void MD5_CTX::MD5_memset (unsigned char* output,int value,unsigned int len)
{
 unsigned int i;
 
 for (i = 0; i < len; i++)
  ((char *)output)[i] = (char)value;
}
//-------------------------------------------------------------------------
用法
    //TODO: Add your source code here
    MD5_CTX *before_password;
    before_password = new MD5_CTX();
    char *temp,final_string[16];
    temp = password.c_str();
    before_password->MD5Update(temp,password.Length());
    before_password->MD5Final(final_string);
    return BCD_to_AnsiString(final_string,16);   //將MD5加密的驗證碼用16進制顯示

posted on 2008-05-03 17:26 信任 閱讀(496) 評論(0)  編輯 收藏 引用
敏捷軟件、敏捷企業(yè)管理系統(tǒng) 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产午夜精品视频| 国产精品v亚洲精品v日韩精品| 国产人成精品一区二区三| 亚洲性图久久| 亚洲欧美成人| 国产一区视频在线观看免费| 麻豆精品视频| 免费成人小视频| 在线亚洲精品| 亚洲欧美国内爽妇网| 国内精品一区二区三区| 欧美成人官网二区| 欧美黄色一级视频| 亚洲欧美日韩一区二区三区在线| 亚洲网站啪啪| ●精品国产综合乱码久久久久| 亚洲欧洲在线免费| 欧美视频免费在线观看| 久久精品一区二区三区不卡牛牛| 久久久久综合网| 日韩亚洲欧美一区| 99re国产精品| 黄色成人免费观看| 一区三区视频| 亚洲国产综合在线| 国产精品一区二区久久久| 美女成人午夜| 国产精品久久国产精品99gif| 久久精品主播| 欧美日本中文字幕| 麻豆91精品| 国产精品海角社区在线观看| 欧美一区二区三区精品| 欧美二区乱c少妇| 欧美亚洲一区| 欧美日韩国产丝袜另类| 久久夜色精品国产欧美乱极品| 欧美日韩亚洲高清| 欧美.com| 韩国v欧美v日本v亚洲v| 亚洲午夜未删减在线观看| 亚洲缚视频在线观看| 午夜欧美不卡精品aaaaa| 亚洲欧洲另类| 久久久久久欧美| 欧美一区二区精美| 国产精品黄视频| 最新高清无码专区| 国内精品视频666| 亚洲欧美第一页| 一区二区三区免费网站| 欧美xxxx在线观看| 免播放器亚洲| 亚洲第一精品久久忘忧草社区| 亚洲午夜激情网站| 亚洲午夜久久久| 欧美激情第8页| 亚洲电影有码| 亚洲国产高清在线观看视频| 欧美一区二区视频在线观看2020| 亚洲曰本av电影| 欧美性生交xxxxx久久久| 亚洲精品一级| 一区二区三欧美| 欧美日韩国产综合视频在线观看| 亚洲激情中文1区| 亚洲精品色图| 久久成人免费网| 国产精品视频yy9099| 亚洲午夜一区| 欧美一区二区三区啪啪| 国产日韩一区欧美| 欧美在线视频免费播放| 久久青草福利网站| 一区二区在线不卡| 牛牛精品成人免费视频| 亚洲电影一级黄| 亚洲无限乱码一二三四麻| 欧美日韩另类国产亚洲欧美一级| 亚洲精品影院在线观看| 午夜精品久久99蜜桃的功能介绍| 国产精品国产三级欧美二区| 亚洲欧洲av一区二区三区久久| 欧美专区在线播放| 亚洲风情在线资源站| 欧美华人在线视频| 亚洲深夜激情| 久久久久这里只有精品| 亚洲精品视频中文字幕| 欧美视频免费| 久久成人综合网| 亚洲国产欧美一区二区三区久久 | 欧美激情在线| 亚洲影音一区| 欧美激情一二三区| 亚洲午夜小视频| 国产在线欧美| 欧美激情一区| 午夜精品视频在线| 亚洲国产毛片完整版 | 久久国产福利| 99www免费人成精品| 国产精品日本| 欧美成人激情视频| 亚洲一区www| 欧美成人一区二区三区| 亚洲综合999| 亚洲激情二区| 国产精品永久入口久久久| 另类酷文…触手系列精品集v1小说| 亚洲精品在线观看视频| 久久先锋资源| 亚洲免费网址| 亚洲精品裸体| 狠狠狠色丁香婷婷综合久久五月| 欧美美女福利视频| 免播放器亚洲| 欧美在线一级va免费观看| 99精品热视频只有精品10| 久久一区视频| 久久av资源网站| 亚洲一区中文字幕在线观看| 亚洲福利视频一区二区| 国产日韩在线一区| 国产精品v日韩精品| 欧美精品久久久久久久免费观看 | 亚洲日本中文字幕| 久久精品亚洲一区| 亚洲少妇在线| 亚洲人成欧美中文字幕| 亚洲高清不卡在线| 狠狠色狠狠色综合系列| 国产区在线观看成人精品| 国产精品久久久久久久久婷婷| 欧美激情国产日韩| 免费久久99精品国产自| 久久全球大尺度高清视频| 欧美在线免费观看| 欧美在线二区| 欧美在线国产| 欧美亚洲免费在线| 久久精品二区亚洲w码| 午夜精品久久99蜜桃的功能介绍| 这里只有视频精品| 亚洲视频在线二区| 亚洲欧美国产日韩中文字幕| 亚洲一区二区三区四区在线观看| 一区二区电影免费观看| 一区二区三区国产盗摄| 在线视频精品| 亚洲一区二区三区免费观看 | 亚洲人成亚洲人成在线观看图片| 久久精品一区二区| 美国成人直播| 亚洲黄色在线观看| 亚洲精品一区二区网址| 亚洲美女视频在线免费观看| 日韩视频永久免费观看| 亚洲午夜精品国产| 午夜精品免费| 久久国产婷婷国产香蕉| 免费视频久久| 欧美日韩精品综合在线| 国产精品久久久久91| 国产视频一区二区三区在线观看| 国模私拍一区二区三区| 黄色成人在线| 最新日韩在线| 篠田优中文在线播放第一区| 久久九九免费视频| 久久性天堂网| 亚洲精品久久久一区二区三区| 99亚洲一区二区| 香蕉av福利精品导航| 久久午夜激情| 国产精品v欧美精品∨日韩| 韩国一区二区三区美女美女秀| 亚洲国产一区二区在线| 亚洲影院在线观看| 免费在线看一区| 中日韩男男gay无套| 久久噜噜亚洲综合| 欧美色视频一区| 国产视频自拍一区| 99精品免费| 久久综合一区二区三区| 日韩午夜在线视频| 免费欧美在线视频| 国产精品永久| avtt综合网| 免播放器亚洲一区| 午夜精品久久久久久久久久久久| 老巨人导航500精品| 国产欧美三级| 亚洲手机成人高清视频| 久久成人资源| 在线亚洲一区| 欧美绝品在线观看成人午夜影视| 一区在线观看视频| 欧美一区二区在线观看|