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

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

?? dlp.c

?? 應用密碼學這本書的源代碼
?? C
字號:
/*
  Author:  Pate Williams (c) 1997

  The following program implements and tests two
  algorithms for solving the discrete logarithm
  problem. The algorithms are baby-step giant-step
  and Pollard's rho algorithms. The implementations
  are from "Handbook of Applied Cryptography" by
  Alfred J. Menezes et al pages 103 - 107.
*/

#include <stdio.h>
#include <stdlib.h>
#include "lip.h"

struct Element {
  long index;
  verylong alpha_index;
};

long Find(long n, verylong value, struct Element *array)
{
  long c, hi = n - 1, lo = 0, mid;

  for (;;) {
    mid = (hi + lo) / 2;
    c = zcompare(value, array[mid].alpha_index);
    if (c == 0) return mid;
    if (c < 0) hi = mid - 1;
    else lo = mid + 1;
    if (lo > hi) return - 1;
  }
}

int BabyStepGiantStep(verylong zalpha, verylong zbeta,
                      verylong zn, verylong zp, verylong *zx)
/* given a generator alpha of a cyclic group G of
   order n and an element beta compute the discrete
   logarithm x returns 0 if not enough memory
   for the problem 1 otherwise */
{
  long i, j, m;
  static verylong za = 0, zd = 0, zg = 0, zm = 0;
  struct Element *element, temp;

  zsqrt(zn, &za, &zd);
  zsadd(za, 1l, &zm);
  m = ztoint(zm);
  element = (struct Element *) malloc(m * sizeof(struct Element));
  if (element == 0) return 0;
  zone(&zd);
  /* construct table */
  for (i = 0; i < m; i++) {
    element[i].index = i;
    element[i].alpha_index = 0;
    zcopy(zd, &element[i].alpha_index);
    zmul(zd, zalpha, &za);
    zmod(za, zp, &zd);
  }
  /* sort on second values */
  for (i = 0; i < m - 1; i++) {
    for (j = i + 1; j < m; j++) {
      if (zcompare(element[i].alpha_index, element[j].alpha_index) > 0) {
        temp = element[i];
        element[i] = element[j];
        element[j] = temp;
      }
    }
  }
  zinvmod(zalpha, zp, &za);
  zexp(za, zm, &zg);
  zmod(zg, zp, &zd);
  zcopy(zbeta, &zg);
  for (i = 0; i < m; i++) {
    printf("%d ", element[i].index);
    zwriteln(element[i].alpha_index);
  }
  for (i = 0; i < m; i++) {
    j = Find(m, zg, element);
    if (j != - 1) {
      zsmul(zm, i, &za);
      zsadd(za, j, zx);
      for (j = 0; j < m; j++)
        zfree(&element[j].alpha_index);
      free(element);
      return 1;
    }
    zmul(zg, zd, &za);
    zmod(za, zp, &zg);
  }
  return 0;
}

void zai(verylong za0, verylong zn, verylong zx0, verylong *za1)
{
  long x = zsmod(zx0, 3l);
  static verylong za = 0;

  if (x == 1)
    zcopy(za0, za1);
  else if (x == 0) {
    zsmul(za0, 2l, &za);
    zmod(za, zn, za1);
  }
  else {
    zsadd(za0, 1l, &za);
    zmod(za, zn, za1);
  }
}

void zbi(verylong zb0, verylong zn, verylong zx0, verylong *zb1)
{
  long x = zsmod(zx0, 3l);
  static verylong zb = 0;

  if (x == 1) {
    zsadd(zb0, 1l, &zb);
    zmod(zb, zn, zb1);
  }
  else if (x == 0) {
    zsmul(zb0, 2l, &zb);
    zmod(zb, zn, zb1);
  }
  else
    zcopy(zb0, zb1);
}

void zfi(verylong zalpha, verylong zbeta, verylong zp, verylong zx0, verylong *zx1)
{
  long x = zsmod(zx0, 3l);

  if (x == 1)
    zmulmod(zbeta, zx0, zp, zx1);
  else if (x == 0)
    zmulmod(zx0, zx0, zp, zx1);
  else
    zmulmod(zalpha, zx0, zp, zx1);
}

int PollardRho(verylong zalpha, verylong zbeta,
               verylong zn, verylong zp, verylong *zx)
{
  long i = 2, j;
  static verylong za0 = 0, za1 = 0, za2 = 0, za3 = 0;
  static verylong zb0 = 0, zb1 = 0, zb2 = 0, zb3 = 0;
  static verylong zx0 = 0, zx1 = 0, zx2 = 0, zx3 = 0;
  static verylong zr = 0, zri = 0;

  zone(&zx0);
  zzero(&za0);
  zzero(&zb0);
  zfi(zalpha, zbeta, zp, zx0, &zx1);
  zai(za0, zn, zx0, &za1);
  zbi(zb0, zn, zx0, &zb1);
  zfi(zalpha, zbeta, zp, zx1, &zx2);
  zai(za1, zn, zx1, &za2);
  zbi(zb1, zn, zx1, &zb2);
  zcopy(za1, &za0);
  zcopy(zb1, &zb0);
  zcopy(zx1, &zx0);
  for (;;) {
    zfi(zalpha, zbeta, zp, zx0, &zx1);
    zai(za0, zn, zx0, &za1);
    zbi(zb0, zn, zx0, &zb1);
    zcopy(za1, &za2);
    zcopy(zb1, &zb2);
    zcopy(zx1, &zx2);
    i++;
    for (j = 0; j < i; j++) {
      zfi(zalpha, zbeta, zp, zx2, &zx3);
      zai(za2, zn, zx2, &za3);
      zbi(zb2, zn, zx2, &zb3);
      zcopy(za3, &za2);
      zcopy(zb3, &zb2);
      zcopy(zx3, &zx2);
    }
    if (zcompare(zx1, zx3) == 0) {
      zsubmod(zb1, zb3, zn, &zr);
      if (zscompare(zr, 0) == 0) return 0;
      zinvmod(zr, zn, &zri);
      zsub(za3, za1, &za0);
      zmulmod(za0, zri, zn, zx);
      return 1;
    }
    zcopy(za1, &za0);
    zcopy(zb1, &zb0);
    zcopy(zx1, &zx0);
  }
}

int main(void)
{
  verylong zalpha = 0, zbeta = 0, zn = 0, zp = 0, zx = 0;

  zintoz(3l, &zalpha);
  zintoz(57l, &zbeta);
  zintoz(112l, &zn);
  zintoz(113l, &zp);
  BabyStepGiantStep(zalpha, zbeta, zn, zp, &zx);
  printf("the discrete logarithm of 57 base 3 = ");
  zwriteln(zx);
  zintoz(2l, &zalpha);
  zintoz(228l, &zbeta);
  zintoz(191l, &zn);
  zintoz(383l, &zp);
  PollardRho(zalpha, zbeta, zn, zp, &zx);
  printf("the discrete logarithm of 228 base 2 = ");
  zwriteln(zx);
  zfree(&zalpha);
  zfree(&zbeta);
  zfree(&zn);
  zfree(&zp);
  zfree(&zx);
  return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品午夜久久福利影院| 国产综合成人久久大片91| 日韩欧美成人一区| 成人精品高清在线| 青青草一区二区三区| 国产精品免费人成网站| 日韩一级视频免费观看在线| 91香蕉视频在线| 国产不卡高清在线观看视频| 视频一区视频二区中文| 最新国产精品久久精品| 国产日韩欧美在线一区| 91麻豆精品久久久久蜜臀 | 91久久久免费一区二区| 国产福利不卡视频| 美女网站一区二区| 调教+趴+乳夹+国产+精品| 中文字幕一区二区三区在线不卡 | 国产视频视频一区| 日韩精品一区二区在线| 欧美性猛片aaaaaaa做受| fc2成人免费人成在线观看播放| 麻豆精品在线看| 日韩电影一区二区三区| 亚洲高清免费在线| 亚洲综合在线五月| 亚洲日本va午夜在线影院| 国产精品萝li| 亚洲国产成人自拍| 国产午夜精品一区二区三区四区| 日韩亚洲欧美成人一区| 在线成人免费视频| 欧美一级高清大全免费观看| 51精品久久久久久久蜜臀| 欧美电影一区二区三区| 3atv一区二区三区| 在线精品视频免费观看| 欧美综合欧美视频| 欧美三级日韩在线| 欧美日产在线观看| 91精品在线免费| 欧美一区二区精品在线| 欧美xxxx老人做受| 久久久蜜桃精品| 亚洲国产精品高清| 亚洲欧美另类图片小说| 一区二区三区精品视频在线| 亚洲国产wwwccc36天堂| 日韩综合小视频| 九九九精品视频| 国产精品白丝av| av一区二区三区| 色欧美乱欧美15图片| 欧美日韩亚洲丝袜制服| 日韩欧美卡一卡二| 国产色产综合色产在线视频| 国产精品入口麻豆原神| 亚洲综合在线电影| 免费观看91视频大全| 韩国av一区二区| 成人激情综合网站| 欧美综合色免费| 精品国产一区二区精华| 国产精品视频你懂的| 一区二区成人在线视频| 日韩和欧美一区二区| 国产在线视视频有精品| aaa国产一区| 欧美揉bbbbb揉bbbbb| 精品国产自在久精品国产| 国产精品污网站| 亚洲成精国产精品女| 精品一区二区三区的国产在线播放| 国产高清不卡二三区| 欧美影视一区在线| 欧美tk—视频vk| 亚洲日本丝袜连裤袜办公室| 日韩成人免费电影| 丁香另类激情小说| 4438x亚洲最大成人网| 国产欧美一区二区在线观看| 香蕉加勒比综合久久| 国产精品亚洲专一区二区三区 | 精品国产麻豆免费人成网站| 国产精品久久午夜| 日韩 欧美一区二区三区| 大桥未久av一区二区三区中文| 欧美精品视频www在线观看| 国产三级欧美三级日产三级99 | 成人免费看的视频| 欧美美女网站色| 日韩一区欧美小说| 极品美女销魂一区二区三区| 91老司机福利 在线| 久久这里只有精品视频网| 亚洲自拍与偷拍| 成人黄色一级视频| 久久综合久久鬼色中文字| 亚洲国产成人精品视频| 99久久精品国产一区二区三区 | 中文字幕不卡三区| 麻豆一区二区三| 欧美日韩一区成人| 亚洲精品免费在线| 成人免费黄色在线| 久久久久久久久久久久久久久99 | 肉肉av福利一精品导航| 一本久久精品一区二区| 国产片一区二区三区| 蜜臂av日日欢夜夜爽一区| 欧美三级欧美一级| 亚洲精品国产成人久久av盗摄| 国产福利一区在线| 久久久久久一二三区| 久久成人综合网| 欧美一区二区三区四区视频| 一区二区三区四区不卡在线| 成人app在线| 欧美极品另类videosde| 国产精品456露脸| 久久亚洲捆绑美女| 久久狠狠亚洲综合| 欧美一区日本一区韩国一区| 亚洲一区二区在线观看视频| 色综合激情五月| 亚洲女性喷水在线观看一区| 99久久国产免费看| 中文字幕在线观看一区二区| 成人性色生活片免费看爆迷你毛片| 久久久亚洲精品一区二区三区| 美女视频第一区二区三区免费观看网站| 欧美午夜精品一区二区三区| 亚洲一区二区成人在线观看| 欧洲一区二区三区免费视频| 亚洲国产成人va在线观看天堂| 欧美色网一区二区| 亚洲超碰97人人做人人爱| 欧美日韩1234| 老司机免费视频一区二区三区| 欧美成人女星排行榜| 国产一区二区精品久久| 久久久精品国产免费观看同学| 国产精品1区二区.| 亚洲四区在线观看| 欧美午夜寂寞影院| 人禽交欧美网站| 久久久亚洲精品一区二区三区| 成人性生交大片免费看中文网站| 综合色天天鬼久久鬼色| 在线国产电影不卡| 日韩影院在线观看| 亚洲精品在线观| 成人免费视频播放| 亚洲香肠在线观看| 精品欧美乱码久久久久久| 国产高清视频一区| 亚洲日本电影在线| 日韩一级免费观看| 成人国产精品免费观看动漫| 亚洲免费观看高清完整| 欧美一区二区网站| 国产精品小仙女| 亚洲精品欧美激情| 日韩精品在线一区| 成人免费视频播放| 午夜精品久久久| 久久一区二区三区国产精品| av一二三不卡影片| 日本免费在线视频不卡一不卡二| 久久影院视频免费| 色系网站成人免费| 久久精品久久综合| 亚洲日本一区二区三区| 欧美一二区视频| 97se亚洲国产综合自在线不卡| 婷婷久久综合九色综合绿巨人| 久久亚洲一级片| 欧美日韩免费不卡视频一区二区三区| 久久99久久99精品免视看婷婷| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲少妇最新在线视频| 7777精品伊人久久久大香线蕉的| 粉嫩av一区二区三区粉嫩| 亚洲网友自拍偷拍| 国产日韩成人精品| 欧美精品少妇一区二区三区| 成人午夜视频网站| 老司机午夜精品| 亚洲高清不卡在线| 国产精品天干天干在线综合| 337p亚洲精品色噜噜噜| 99久久99久久精品免费观看| 久久成人综合网| 性久久久久久久| 亚洲啪啪综合av一区二区三区| 欧美精品一区男女天堂| 欧美美女激情18p| 色婷婷久久一区二区三区麻豆| 国产精品一品视频| 日本欧美加勒比视频|