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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? genirred.c

?? 應(yīng)用密碼學(xué)這本書的源代碼
?? C
字號:
/*

  Author:  Pate Williams (c) 1997



  Program to generate a random irreducible

  polynomial contained in Zp p prime. See

  "Handbook of Applied Cryptography" pages

  157 - 158. Also see "A Course in Computa-

  tional Algebraic Number Theory" by Henri

  Cohen pages 37 and 127.

*/



#include <ctype.h>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include "lip.h"

#define POLY_SIZE 8192l



void zpoly_copy(long da, verylong *za, verylong *zb, long *db)

{

  long i;



  *db = da;

  for (i = 0; i <= da; i++) zcopy(za[i], &zb[i]);

}



void zpoly_mul(long m, long n, verylong *za, verylong *zb,

               verylong *zc, long *p)

{

  long i, j, k;

  verylong zd = 0, zai = 0, zbk = 0, zsum = 0, zterm = 0;



  *p = m + n;

  for (k = 0; k <= *p; k++) {

    zzero(&zsum);

    for (i = 0; i <= k; i++) {

      j = k - i;

      if (i > m) zzero(&zai);

      else zcopy(za[i], &zai);

      if (j > n) zzero(&zbk);

      else zcopy(zb[j], &zbk);

      zmul(zai, zbk, &zterm);

      zcopy(zsum, &zd);

      zadd(zterm, zd, &zsum);

    }

    zcopy(zsum, &zc[k]);

  }

  zfree(&zd);

  zfree(&zai);

  zfree(&zbk);

  zfree(&zsum);

  zfree(&zterm);

}



void zpoly_div(long m, long n, verylong *zu, verylong *zv,

               verylong *zq, verylong *zr, long *p, long *s)

{

  long j, jk, k, nk;

  verylong za = 0, zb = 0, zvn = 0;



  zcopy(zv[n], &zvn);

  for (j = 0; j <= m; j++)

    zcopy(zu[j], &zr[j]);

  if (m < n) {

    *p = 0, *s = m;

    zzero(&zq[0]);

  }

  else {

    *p = m - n, *s = n - 1;

    for (k = *p; k >= 0; k--) {

      nk = n + k;

      zsexp(zvn, k, &za);

      zmul(zr[nk], za, &zq[k]);

      for (j = nk - 1; j >= 0; j--) {

        jk = j - k;

        if (jk >= 0) {

          zmul(zvn, zr[j], &za);

          zmul(zr[nk], zv[jk], &zb);

          zsub(za, zb, &zr[j]);

        }

        else {

          zcopy(zr[j], &za);

          zmul(zvn, za, &zr[j]);

        }

      }

    }

    while (*p > 0 && zscompare(zq[*p], 0l) == 0) *p = *p - 1;

    while (*s > 0 && zscompare(zr[*s], 0l) == 0) *s = *s - 1;

  }

  zfree(&za);

  zfree(&zb);

  zfree(&zvn);

}



void zpoly_mod(verylong zp, verylong *za, long *da)

{

  long i;

  verylong zb = 0;



  for (i = 0; i <= *da; i++) {

    zmod(za[i], zp, &zb);

    zcopy(zb, &za[i]);

  }

  while (*da > 0 && zscompare(za[*da], 0l) == 0) *da = *da - 1;

  zfree(&zb);

}



void zpoly_pow(long degreeA, long degreem, verylong zn,

               verylong zp, verylong *zA,

               verylong *zm, verylong *zs,

               long *ds)

{

  long dP, dq, dx = degreeA, i;

  verylong za = 0, zb = 0, zP[POLY_SIZE], zq[POLY_SIZE],

           zx[POLY_SIZE], zy[POLY_SIZE];



  for (i = 0; i < POLY_SIZE; i++)

    zP[i] = zq[i] = zx[i] = zy[i] = 0;

  *ds = 0;

  zcopy(zn, &za);

  zone(&zs[0]);

  for (i = 0; i <= dx; i++) zcopy(zA[i], &zx[i]);

  while (zscompare(za, 0l) > 0) {

    if (zodd(za)) {

      /* s = (s * x) % m; */

      zpoly_mul(*ds, dx, zs, zx, zP, &dP);

      zpoly_div(dP, degreem, zP, zm, zq, zs, &dq, ds);

      zpoly_mod(zp, zs, ds);

    }

    zcopy(za, &zb);

    zrshift(zb, 1l, &za);

    if (zscompare(za, 0l) > 0) {

      /* x = (x * x) % m; */

      for (i = 0; i <= dx; i++) zcopy(zx[i], &zy[i]);

      zpoly_mul(dx, dx, zx, zy, zP, &dP);

      zpoly_div(dP, degreem, zP, zm, zq, zx, &dq, &dx);

      zpoly_mod(zp, zx, &dx);

    }

  }

  zfree(&za);

  zfree(&zb);

  for (i = 0; i < POLY_SIZE; i++) {

    zfree(&zP[i]);

    zfree(&zq[i]);

    zfree(&zx[i]);

    zfree(&zy[i]);

  }

}



void zpoly_sub(long da, long db, verylong *za, verylong *zb,

               verylong *zc, long *dc)

{

  long i;

  verylong zz = 0;



  zzero(&zz);

  if (da >= db) {

    for (i = 0; i <= db; i++)

      zsub(za[i], zb[i], &zc[i]);

    for (i = db + 1; i <= da; i++)

      zcopy(za[i], &zc[i]);

    *dc = da;

  }

  else {

    for (i = 0; i <= da; i++)

      zsub(za[i], zb[i], &zc[i]);

    for (i = da + 1; i <= db; i++)

      zsub(zz, zb[i], &zc[i]);

    *dc = db;

  }

  zfree(&zz);

}



void zpoly_gcd(long degreeA, long degreeB, verylong zp,

               verylong *zA, verylong *zB, verylong *za,

               long *da)

{

  int nonzero = 0, zero;

  long db, dq, dr, i;

  verylong zc = 0;

  verylong zb[POLY_SIZE], zq[POLY_SIZE], zr[POLY_SIZE];



  for (i = 0; i < POLY_SIZE; i++)

    zb[i] = zq[i] = zr[i] = 0;

  if (degreeA > degreeB) {

    *da = degreeA;

    db = degreeB;

    for (i = 0; i <= *da; i++) zcopy(zA[i], &za[i]);

    for (i = 0; i <= db; i++) zcopy(zB[i], &zb[i]);

  }

  else {

    *da = degreeB;

    db = degreeA;

    for (i = 0; i <= *da; i++) zcopy(zB[i], &za[i]);

    for (i = 0; i <= db; i++) zcopy(zA[i], &zb[i]);

  }

  for (i = 0; i <= db && !nonzero; i++)

    nonzero = zscompare(zb[i], 0l) != 0;

  while (nonzero) {

    zpoly_div(*da, db, za, zb, zq, zr, &dq, &dr);

    for (i = 0; i <= dr; i++) {

      zcopy(zr[i], &zc);

      zmod(zc, zp, &zr[i]);

    }

    zero = 1;

    for (i = dr; i >= 0 && zero; i--) {

      zero = zscompare(zr[i], 0l) == 0;

      if (zero && dr > 0) dr--;

    }

    for (i = 0; i <= db; i++) zcopy(zb[i], &za[i]);

    *da = db;

    for (i = 0; i <= dr; i++) zcopy(zr[i], &zb[i]);

    db = dr;

    nonzero = 0;

    for (i = 0; i <= db && !nonzero; i++)

      nonzero = zscompare(zb[i], 0l) != 0;

  }

  zfree(&zc);

  for (i = 0; i < POLY_SIZE; i++) {

    zfree(&zb[i]);

    zfree(&zq[i]);

    zfree(&zr[i]);

  }

}



void zpoly_print(long da, verylong *za)

{

  long i;



  for (i = da; i >= 0; i--) {

    zwrite(za[i]);

    printf(" ");

  }

  printf("\n");

}



void zpoly_ext_euclid(long dg, long dh, verylong zp, verylong *zg,

                      verylong *zh, verylong *zs,

                      verylong *zt, verylong *zd,

                      long *ds, long *dt, long *dd)

{

  long da, dq, dr, ds1 = 0, ds2 = 0, dt1 = 0, dt2 = 0, i;

  verylong za[POLY_SIZE], zb[POLY_SIZE];

  verylong zq[POLY_SIZE], zr[POLY_SIZE];

  verylong zs1[POLY_SIZE], zs2[POLY_SIZE];

  verylong zt1[POLY_SIZE], zt2[POLY_SIZE];



  if (dh == 0 && zscompare(zh[0], 0l) == 0) {

    zpoly_copy(dg, zg, zd, dd);

    *ds = *dt = 0;

    zone(&zs[0]);

    zzero(&zt[0]);

  }

  for (i = 0; i < POLY_SIZE; i++) {

    za[i] = zb[i] = zq[i] = zr[i] = 0;

    zs1[i] = zs2[i] = zt1[i] = zt2[i] = 0;

  }

  zone(&zs2[0]);

  zzero(&zs1[0]);

  zzero(&zt2[0]);

  zone(&zt1[0]);

  while (dh != 0 || zscompare(zh[0], 0l) != 0) {

    zpoly_div(dg, dh, zg, zh, zq, zr, &dq, &dr);

    zpoly_mod(zp, zq, &dq);

    zpoly_mod(zp, zr, &dr);

    zpoly_mul(dq, ds1, zq, zs1, za, &da);

    zpoly_sub(ds2, da, zs2, za, zs, ds);

    zpoly_mul(dq, dt1, zq, zt1, za, &da);

    zpoly_sub(dt2, da, zt2, za, zt, dt);

    zpoly_mod(zp, zs, ds);

    zpoly_mod(zp, zt, dt);

    zpoly_copy(dh, zh, zg, &dg);

    zpoly_copy(dr, zr, zh, &dh);

    zpoly_copy(ds1, zs1, zs2, &ds2);

    zpoly_copy(*ds, zs, zs1, &ds1);

    zpoly_copy(dt1, zt1, zt2, &dt2);

    zpoly_copy(*dt, zt, zt1, &dt1);

    #ifdef DEBUG

    printf("q  = "); zpoly_print(dq, zq);

    printf("r  = "); zpoly_print(dr, zr);

    printf("s  = "); zpoly_print(*ds, zs);

    printf("t  = "); zpoly_print(*dt, zt);

    printf("g  = "); zpoly_print(dg, zg);

    printf("h  = "); zpoly_print(dh, zh);

    printf("s2 = "); zpoly_print(ds2, zs2);

    printf("s1 = "); zpoly_print(ds1, zs1);

    printf("t2 = "); zpoly_print(dt2, zt2);

    printf("t1 = "); zpoly_print(dt1, zt1);

    #endif

  }

  zpoly_copy(dg, zg, zd, dd);

  zpoly_copy(ds2, zs2, zs, ds);

  zpoly_copy(dt2, zt2, zt, dt);

  for (i = 0; i < POLY_SIZE; i++) {

    zfree(&za[i]);

    zfree(&zb[i]);

    zfree(&zq[i]);

    zfree(&zr[i]);

    zfree(&zs1[i]);

    zfree(&zs2[i]);

    zfree(&zt1[i]);

    zfree(&zt2[i]);

  }

}



void Recurse(long degreeA, verylong zp, verylong *zA,

             verylong *zroot, long *rootSize)

{

  long dd, degreeB, dq, dr, du = 1, i;

  verylong zD = 0, za = 0, zb = 0, zc = 0, ze = 0;

  verylong zn = 0;

  verylong zB[POLY_SIZE], zd[POLY_SIZE];

  verylong zq[POLY_SIZE], zr[POLY_SIZE];

  verylong zu[2];



  for (i = 0; i < POLY_SIZE; i++)

    zB[i] = zd[i] = zq[i] = zr[i] = 0;

  zu[0] = zu[1] = 0;

  if (degreeA != 0) {

    if (degreeA == 1) {

      if (zscompare(zA[1], 0l) != 0) {

         zinvmod(zA[1], zp, &za);

         zmul(zA[0], za, &zb);

         znegate(&zb);

         zmod(zb, zp, &zroot[*rootSize]);

      }

      *rootSize = *rootSize + 1;

    }

    else if (degreeA == 2) {

      zsq(zA[1], &za);

      zmul(zA[0], zA[2], &zb);

      zlshift(zb, 2l, &zc);

      zsub(za, zc, &zb);

      zmod(zb, zp, &zD);

      zsqrtmod(zD, zp, &ze);

      zlshift(zA[2], 1l, &za);

      zinvmod(za, zp, &zD);

      zsub(ze, zA[1], &za);

      zmulmod(za, zD, zp, &zroot[*rootSize]);

      *rootSize = *rootSize + 1;

      znegate(&zA[1]);

      znegate(&ze);

      zadd(zA[1], ze, &za);

      zmulmod(za, zD, zp, &zroot[*rootSize]);

      *rootSize = *rootSize + 1;

    }

    else {

      zsadd(zp, - 1l, &za);

      zrshift(za, 1l, &zn);

      do {

        zrandomb(zp, &za);

        zcopy(za, &zu[0]);

        zone(&zu[1]);

        zpoly_pow(du, degreeA, zn, zp, zu, zA, zd, &dd);

        zsadd(zd[0], - 1l, &za);

        zcopy(za, &zd[0]);

        zpoly_gcd(dd, degreeA, zp, zd, zA, zB, &degreeB);

      } while (degreeB == 0 || degreeB == degreeA);

      Recurse(degreeB, zp, zB, zroot, rootSize);

      zpoly_div(degreeA, degreeB, zA, zB, zq, zr, &dq, &dr);

      zpoly_mod(zp, zq, &dq);

      Recurse(dq, zp, zq, zroot, rootSize);

    }

  }

  zfree(&zD);

  zfree(&za);

  zfree(&zb);

  zfree(&zc);

  zfree(&ze);

  zfree(&zn);

  for (i = 0; i < POLY_SIZE; i++) {

    zfree(&zB[i]);

    zfree(&zd[i]);

    zfree(&zq[i]);

    zfree(&zr[i]);

  }

  zfree(&zu[0]);

  zfree(&zu[1]);

}



long horner(long degreeP, long p, long x, verylong *zP)

{

  long i, r;

  verylong za = 0, zr = 0;



  zcopy(zP[degreeP], &zr);

  for (i = degreeP - 1; i >= 0; i--) {

    zsmul(zr, x, &za);

    zadd(za, zP[i], &zr);

  }

  r = zsmod(zr, p);

  zfree(&za);

  zfree(&zr);

  return r;

}



void FindRootsModuloAPrime(long degreeP, verylong zp,

                           verylong *zP, verylong *zroot,

                           long *rootSize)

{

  long degreeA, dy, i, j, p, r;

  verylong za = 0, zt = 0;

  verylong zA[POLY_SIZE], zx[POLY_SIZE], zy[POLY_SIZE];



  for (i = 0; i < POLY_SIZE; i++)

    zA[i] = zx[i] = zy[i] = 0;

  *rootSize = 0;

  if (zscompare(zp, degreeP) <= 0) {

    p = ztoint(zp);

    for (i = 0; i < p; i++) {

      r = horner(degreeP, p, i, zP);

      if (r == 0) {

        zintoz(i, &zroot[*rootSize]);

        *rootSize = *rootSize + 1;

      }

    }

  }

  else {

    zzero(&zx[0]);

    zone(&zx[1]);

    zpoly_pow(1, degreeP, zp, zp, zx, zP, zy, &dy);

    zsadd(zy[1], - 1l, &za);

    zcopy(za, &zy[1]);

    zpoly_gcd(dy, degreeP, zp, zy, zP, zA, &degreeA);

    if (zscompare(zA[0], 0l) == 0) {

      zzero(&zroot[*rootSize]);

      *rootSize = *rootSize + 1;

      for (i = 0; i < degreeA; i++)

        zcopy(zA[i + 1], &zA[i]);

      degreeA--;

    }

    Recurse(degreeA, zp, zA, zroot, rootSize);

    /* sort the roots using selection sort */

    for (i = 0; i < *rootSize - 1; i++) {

      for (j = i + 1; j < *rootSize; j++) {

        if (zcompare(zroot[i], zroot[j]) > 0) {

          zcopy(zroot[i], &zt);

          zcopy(zroot[j], &zroot[i]);

          zcopy(zt, &zroot[j]);

        }

      }

    }

  }

  zfree(&zt);

  for (i = 0; i < POLY_SIZE; i++) {

    zfree(&zA[i]);

    zfree(&zx[i]);

    zfree(&zy[i]);

  }

}



void generate(long m, verylong zp, verylong *zf)

/* generates a random irreducible polynomial over Zp

   of degree m */

{

  long i, rootSize;

  verylong *zroot;



  zroot = calloc(m + 1, sizeof(verylong));

  if (!zroot) {

    fprintf(stderr, "fatal error\ninsufficient memory\n");

    exit(1);

  }

  zone(&zf[0]);

  do {

    for (i = 1; i < m; i++) zrandomb(zp, &zf[i]);

    zone(&zf[m]);

    FindRootsModuloAPrime(m, zp, zf, zroot, &rootSize);

  } while (rootSize);

  for (i = 0; i <= m; i++) zfree(&zroot[i]);

}



int main(void)

{

  char answer[256];

  int non, one;

  long i, j, m;

  verylong zf[POLY_SIZE], zp = 0;



  zrstarts(time(NULL));

  for (i = 0; i < POLY_SIZE; i++) zf[i] = 0;

  do {

    printf("degree of polynomial: ");

    scanf("%d", &m);

    do {

      printf("prime: ");

      zread(&zp);

    } while (!zprobprime(zp, 5l));

    generate(m, zp, zf);

    printf("a random irreducible polynomial of ");

    printf("degree %ld over Z", m);

    zwrite(zp);

    printf(" is as follows:\n");

    for (i = m; i >= 0; i--) {

      zwrite(zf[i]);

      printf(" ");

    }

    printf("\n");

    for (i = m; i >= 0; i--) {

      if (zscompare(zf[i], 0l) != 0) {

        if (i != m) {

          non = 0;

          for (j = i - 1; !non && j >= 0; j--)

            non = zscompare(zf[j], 0l) != 0;

          if (non) printf(" + ");

          one = zscompare(zf[i], 1l) == 0;

          if (!one) zwrite(zf[i]);

          if (i == 0 && one) printf(" + 1");

        }

        if (i == 0) printf("\n");

        else if (i == 1) {

          if (one) printf("x"); else printf(" * x");

        }

        else if (i == m) printf("x ^ %ld", i);

        else if (one) printf("x ^ %ld", i);

        else printf(" * x ^ %ld", i);

      }

    }

    printf("again (n or y)? ");

    scanf("%s", answer);

  } while (tolower(answer[0]) == 'y');

  zfree(&zp);

  for (i = 0; i < POLY_SIZE; i++) zfree(&zf[i]);

  return 0;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡2卡3卡4卡| 亚洲国产精品久久久久婷婷884| 国产精品一区专区| 国产欧美精品一区| gogogo免费视频观看亚洲一| 最好看的中文字幕久久| 在线这里只有精品| 日韩黄色一级片| 精品剧情在线观看| 懂色av一区二区三区免费看| 亚洲视频免费看| 欧美日韩不卡在线| 国产美女在线观看一区| 国产精品伦理在线| 欧美日韩国产欧美日美国产精品| 另类小说欧美激情| 中文字幕日韩一区| 在线播放91灌醉迷j高跟美女| 久久电影国产免费久久电影| 国产精品视频九色porn| 欧美视频日韩视频| 韩国女主播一区| 亚洲精品伦理在线| 日韩精品中文字幕一区二区三区 | 天堂久久久久va久久久久| 日韩精品一区二区三区视频在线观看| 国产寡妇亲子伦一区二区| 亚洲免费伊人电影| 日韩精品专区在线影院观看| 99免费精品视频| 免费看欧美美女黄的网站| 国产女主播一区| 欧美高清视频不卡网| 国产成人综合亚洲网站| 一区二区三区精品| 精品99一区二区| 色欧美片视频在线观看在线视频| 免费成人美女在线观看| 自拍偷自拍亚洲精品播放| 日韩限制级电影在线观看| 99在线热播精品免费| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品免费久久久久| 欧美丰满少妇xxxxx高潮对白| 成人精品鲁一区一区二区| 视频在线观看91| 亚洲天堂精品视频| 久久综合九色综合97婷婷| 欧美在线观看视频一区二区三区| 国产精品综合av一区二区国产馆| 亚洲电影在线免费观看| 亚洲国产精品成人综合| 在线不卡免费av| 一本大道久久a久久精二百| 国产主播一区二区三区| 亚洲午夜私人影院| 国产精品免费网站在线观看| 欧美一区二区三区日韩| 色94色欧美sute亚洲13| 大胆亚洲人体视频| 免费亚洲电影在线| 亚洲国产成人91porn| 国产精品欧美一区喷水| 精品国产免费人成电影在线观看四季| 欧美自拍偷拍午夜视频| 成人精品在线视频观看| 国产综合色在线| 丝袜亚洲另类丝袜在线| 亚洲色图欧美偷拍| 久久久精品人体av艺术| 91精品国产高清一区二区三区蜜臀| 91在线视频官网| 国产精品99久久久久久宅男| 乱一区二区av| 青娱乐精品视频在线| 亚洲一区二区三区爽爽爽爽爽| 国产精品免费aⅴ片在线观看| 精品国产一二三| 欧美刺激脚交jootjob| 欧美精品v日韩精品v韩国精品v| 91黄色激情网站| 91香蕉视频mp4| 成人妖精视频yjsp地址| 国产精品亚洲一区二区三区在线| 久久精品国产99久久6| 日本aⅴ亚洲精品中文乱码| 亚洲午夜成aⅴ人片| 亚洲综合免费观看高清完整版在线 | 欧美肥妇bbw| 欧美日韩美少妇| 欧美私人免费视频| 91国产视频在线观看| 99视频国产精品| 91在线小视频| 91丨九色丨蝌蚪富婆spa| 99精品视频中文字幕| 本田岬高潮一区二区三区| 国产91精品露脸国语对白| 国产一区二区看久久| 国产一区二区在线观看视频| 久久99精品久久久久久国产越南| 日韩精品免费专区| 日韩电影免费在线| 日韩中文字幕91| 日本中文在线一区| 蜜臀久久99精品久久久久久9| 蜜臀av性久久久久蜜臀av麻豆| 日本欧美在线看| 九九**精品视频免费播放| 久久国产生活片100| 狠狠色丁香婷婷综合久久片| 久久99精品国产麻豆不卡| 精品亚洲免费视频| 国产福利视频一区二区三区| 国产91丝袜在线18| 成人开心网精品视频| 97久久精品人人澡人人爽| 在线这里只有精品| 欧美日韩夫妻久久| 这里只有精品免费| 欧美成人精品高清在线播放 | 欧美大片在线观看一区| 日韩精品一区二区三区中文不卡 | 久久奇米777| 国产精品视频麻豆| 亚洲精品日韩综合观看成人91| 一区二区三区欧美激情| 五月婷婷综合在线| 青青青伊人色综合久久| 精品一二三四区| 成人涩涩免费视频| 91色九色蝌蚪| 欧美丰满少妇xxxxx高潮对白| 亚洲精品一区二区在线观看| 国产精品午夜电影| 一区二区三区在线免费观看| 午夜精品久久久久| 久久99精品国产.久久久久| 国产99一区视频免费| 91麻豆视频网站| 欧美男男青年gay1069videost| 欧美大片国产精品| 国产精品视频看| 亚洲成人免费av| 国产一区二区三区精品视频| 99久久精品情趣| 欧美卡1卡2卡| 国产网站一区二区| 亚洲人成亚洲人成在线观看图片| 亚洲超碰精品一区二区| 久久99国产精品久久| eeuss鲁片一区二区三区在线看| 欧美视频完全免费看| 久久丝袜美腿综合| 一级女性全黄久久生活片免费| 久久69国产一区二区蜜臀| av男人天堂一区| 欧美日韩情趣电影| 久久久久综合网| 亚洲一区二区三区在线看 | 美女被吸乳得到大胸91| 国产iv一区二区三区| 欧美色视频在线观看| 久久综合九色综合久久久精品综合| 亚洲精品视频免费观看| 久久99精品久久久久久动态图| 色综合久久综合网欧美综合网 | 91精品一区二区三区久久久久久 | 日韩精品一区二| 亚洲欧美区自拍先锋| 精品一区二区在线播放| 99热99精品| 精品国产一区a| 亚洲国产sm捆绑调教视频| 国产一区二区三区四区五区美女| 一本一道综合狠狠老| 久久―日本道色综合久久| 午夜精品一区二区三区免费视频| 粉嫩av一区二区三区粉嫩| 7777精品伊人久久久大香线蕉完整版| 欧美国产精品一区| 人禽交欧美网站| 色老头久久综合| 久久精品视频在线免费观看| 香蕉久久一区二区不卡无毒影院| 国产成人自拍网| 日韩一区二区麻豆国产| 亚洲男女毛片无遮挡| 国产成人久久精品77777最新版本| 欧美精品日韩综合在线| 亚洲乱码中文字幕| 国产精品白丝av| 日韩欧美亚洲国产精品字幕久久久| 伊人婷婷欧美激情| 国产成人激情av| 精品蜜桃在线看| 日韩专区欧美专区| 色狠狠av一区二区三区| 国产精品久久久久影院亚瑟| 国产真实乱对白精彩久久|