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

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

?? nonsin.c

?? 斯坦福大學密碼學家Boneh的基于身份的公鑰密碼系統(tǒng)
?? C
字號:
enum {    See LICENSE for license    qbits = 10};static mpz_t p, q, p1onq;static mpz_t nq;static mpz_t moq;static mpz_t curve_a, curve_b;static gmp_randstate_t rand_state;static void evaluate_curve(mpz_t z, mpz_t x, mpz_t y){    mpz_t t0, t1;    mpz_init(t0); mpz_init(t1);    mpz_mul(t1, y, y);    mpz_mul(t0, x, x);    mpz_add(t0, t0, curve_a);    mpz_mul(t0, t0, x);    mpz_add(t0, t0, curve_b);    mpz_sub(t1, t1, t0);    mpz_mod(z, t1, p);    mpz_clear(t0); mpz_clear(t1);}static void point_add(mpz_t x3, mpz_t y3,	mpz_t x1, mpz_t y1,	mpz_t x2, mpz_t y2){    mpz_t t0, t1;    mpz_t l;    mpz_init(t0); mpz_init(t1);    mpz_init(l);    mpz_sub(t0, x2, x1);    if (!mpz_invert(t0, t0, p)) {	printf("divide by zero!\n");	exit(1);    }    mpz_sub(l, y2, y1);    mpz_mul(l, l, t0);    mpz_mod(l, l, p);    mpz_mul(t0, l, l);    mpz_sub(t0, t0, x1);    mpz_sub(t0, t0, x2);    mpz_mod(t0, t0, p);    mpz_sub(t1, x1, t0);    mpz_mul(t1, t1, l);    mpz_sub(t1, t1, y1);    mpz_set(x3, t0);    mpz_mod(y3, t1, p);    mpz_clear(l);    mpz_clear(t0); mpz_clear(t1);}static void point_double(mpz_t x3, mpz_t y3, mpz_t x1, mpz_t y1){    mpz_t t0, t1;    mpz_t l;    mpz_init(t0); mpz_init(t1);    mpz_init(l);    mpz_mul(l, x1, x1);    mpz_mul_ui(l, l, 3);    mpz_add(l, l, curve_a);    mpz_add(t0, y1, y1);    if (!mpz_invert(t0, t0, p)) {	printf("/0!\n");	exit(1);    }    mpz_mul(l, l, t0);    mpz_mod(l, l, p);    mpz_mul(t0, l, l);    mpz_sub(t0, t0, x1);    mpz_sub(t0, t0, x1);    mpz_mod(t0, t0, p);    mpz_sub(t1, x1, t0);    mpz_mul(t1, t1, l);    mpz_sub(t1, t1, y1);    mpz_set(x3, t0);    mpz_mod(y3, t1, p);    mpz_clear(l);    mpz_clear(t0); mpz_clear(t1);}static void point_mul(mpz_t x3, mpz_t y3, mpz_t a, mpz_t x1, mpz_t y1){    int j;    mpz_t t0, t1;    mpz_init(t0); mpz_init(t1);    j = mpz_sizeinbase(a, 2) - 1;    mpz_set(t0, x1);    mpz_set(t1, y1);    j--;    while(j >= 0) {	point_double(t0, t1, t0, t1);	if (mpz_tstbit(a, j)) {	    point_add(t0, t1, t0, t1, x1, y1);	}	j--;    }    mpz_set(x3, t0);    mpz_set(y3, t1);    mpz_clear(t0); mpz_clear(t1);}static void tonelli(mpz_t x, mpz_t a){    int i, m;    int r, e;    mpz_t qq;    mpz_t y;    mpz_t b;    mpz_t t;    mpz_init(qq);    mpz_init(y);    mpz_init(b);    mpz_init(t);    mpz_sub_ui(qq, p, 1);    e = mpz_scan1(qq, 0);    mpz_tdiv_q_2exp (qq, qq, e);    mpz_powm(y, nq, qq, p);    r = e;    //(q-1)/2    mpz_tdiv_q_2exp(qq, qq, 1);    mpz_powm(x, a, qq, p);    mpz_mul(b, x, x);    mpz_mul(b, b, a);    mpz_mod(b, b, p);    mpz_mul(x, x, a);    mpz_mod(x, x, p);    while (mpz_cmp_ui(b, 1)) {	m = 1;	mpz_set(t, b);	for (;;) {	    mpz_mul(t, t, t);	    mpz_mod(t, t, p);	    if (!mpz_cmp_ui(t, 1)) break;	    m++;	}	mpz_set(t, y);	for (i=0; i<r-m-1; i++) {	    mpz_mul(t, t, t);	    mpz_mod(t, t, p);	}	mpz_mul(y, t, t);	mpz_mod(y, y, p);	r = m;	mpz_mul(x, x, t);	mpz_mod(x, x, p);	mpz_mul(b, b, y);	mpz_mod(b, b, p);    }    mpz_clear(qq);    mpz_clear(y);    mpz_clear(b);    mpz_clear(t);}static void point_random(mpz_t x, mpz_t y){    mpz_t t0;    mpz_init(t0);    for (;;) {	mpz_urandomm(x, rand_state, p);	mpz_mul(t0, x, x);	mpz_add(t0, t0, curve_a);	mpz_mul(t0, t0, x);	mpz_add(t0, t0, curve_b);	if (mpz_legendre(t0, p) == 1) break;    }    tonelli(y, t0);    mpz_clear(t0);}void make_order_q(mpz_t x, mpz_t y){    point_mul(x, y, moq, x, y);}static void find_curve(){    mpz_t x, y;    mpz_t x2, y2;    mpz_t j, c;    mpz_t n;    mpz_init(j); mpz_init(c);    mpz_init(x); mpz_init(y);    mpz_init(x2); mpz_init(y2);    mpz_init(n);    mpz_set_ui(n, 1);    mpz_mul_2exp(n, n, qbits);    do {	mpz_urandomm(q, rand_state, n);	mpz_nextprime(q, q);	//printf("q: "); mpz_out_str(stdout, 10, q); printf("\n");	mpz_mul(p, q, q);	mpz_mul_ui(p, p, 28);	mpz_add_ui(p, p, 1);	//printf("p: "); mpz_out_str(stdout, 10, p); printf("\n");    } while (!mpz_probab_prime_p(p, 10));    printf("p: "); mpz_out_str(stdout, 10, p); printf("\n");    printf("q: "); mpz_out_str(stdout, 10, q); printf("\n");    mpz_sub_ui(p1onq, p, 1);    mpz_divexact(p1onq, p1onq, q);    mpz_set_ui(moq, 28);    mpz_init(nq);    for(;;) {	mpz_urandomm(nq, rand_state, p);	if (mpz_legendre(nq, p) == -1) break;    }    //printf("nq = "); mpz_out_str(stdout, 10, nq); printf("\n");    mpz_sub_ui(j, p, 3375);    mpz_sub_ui(c, j, 1728);    mpz_invert(c, c, p);    mpz_mul(c, c, j);    mpz_mod(c, c, p);    mpz_mul_si(curve_a, c, -3);    mpz_mod(curve_a, curve_a, p);    mpz_mul_ui(curve_b, c, 2);    mpz_mod(curve_b, curve_b, p);    //mpz_set_ui(p, 59);    //mpz_set_ui(curve_a, 0);    //mpz_set_ui(curve_b, 1);    printf("Y^2 = X^3 + ");    mpz_out_str(stdout, 10, curve_a);    printf("X + ");    mpz_out_str(stdout, 10, curve_b);    printf("\n");    for(;;) {	mpz_t z;	mpz_init(z);	point_random(x2, y2);	make_order_q(x2, y2);	mpz_sub_ui(z, q, 1);	point_mul(x, y, z, x2, y2);//printf("(x, y) = ("); mpz_out_str(stdout, 10, x); printf(", ");//mpz_out_str(stdout, 10, y); printf(")\n");//printf("(x, y) = ("); mpz_out_str(stdout, 10, x2); printf(", ");//mpz_out_str(stdout, 10, y2); printf(")\n");	if (mpz_cmp(x, x2)) {	    //should be order p + 3 instead, unless my conjecture's wrong	    mpz_add_ui(z, p, 2);	    point_mul(x, y, z, x2, y2);	    if (mpz_cmp(x, x2)) {		printf("COUNTEREXAMPLE!\n");		exit(0);	    }	    printf("wrong curve. trying quadratic twist...\n");	    mpz_mul(curve_a, curve_a, nq);	    mpz_mul(curve_a, curve_a, nq);	    mpz_mul(curve_b, curve_b, nq);	    mpz_mul(curve_b, curve_b, nq);	    mpz_mul(curve_b, curve_b, nq);	} else break; 	mpz_clear(z);    }    printf("E[q] lies in F_p\n");    mpz_clear(j); mpz_clear(c);    mpz_clear(x); mpz_clear(y);    mpz_clear(x2); mpz_clear(y2);    mpz_clear(n);}static void get_line(mpz_t v, mpz_t vd, mpz_t Qx, mpz_t Qy,	mpz_t Ax, mpz_t Ay, mpz_t Bx, mpz_t By){    mpz_t a, b, c;    mpz_t t0, t1;    mpz_init(a); mpz_init(b); mpz_init(c);    mpz_init(t0); mpz_init(t1);    //it should be    //a = -(Q.y - P.y) / (Q.x - P.x);    //b = 1;    //c = -(P.y + a * P.x);    //but we'll multiply by Q.x - P.x to avoid division    mpz_sub(b, Bx, Ax);    mpz_mod(b, b, p);    mpz_sub(a, Ay, By);    mpz_mod(a, a, p);    mpz_mul(t0, b, Ay);    mpz_mul(c, a, Ax);    mpz_add(c, c, t0);    mpz_neg(c, c);    mpz_mod(c, c, p);    mpz_mul(t0, a, Qx);    mpz_mul(t1, b, Qy);    mpz_add(t0, t0, t1);    mpz_add(t0, t0, c);    mpz_mod(t0, t0, p);    mpz_mul(v, v, t0);    mpz_mod(v, v, p);    mpz_mul(vd, vd, b);    mpz_mod(vd, vd, p);    mpz_clear(a); mpz_clear(b); mpz_clear(c);    mpz_clear(t0); mpz_clear(t1);}static void get_tangent(mpz_t v, mpz_t vd, mpz_t Qx, mpz_t Qy,	mpz_t Ax, mpz_t Ay){    mpz_t a, b, c;    mpz_t t0, t1;    mpz_init(a); mpz_init(b); mpz_init(c);    mpz_init(t0); mpz_init(t1);    //it should be    //a = -slope_tangent(P.x, P.y);    //b = 1;    //c = -(P.y + a * P.x);    //but we multiply by 2*P.y to avoid division    //a = -Px * (Px + Px + Px + *twicea2) - *a4;    //assume a2 = 0 (a4 = curve_a)    mpz_add(a, Ax, Ax);    mpz_add(a, a, Ax);    mpz_mul(a, Ax, Ax);    mpz_neg(a, a);    mpz_sub(a, a, curve_a);    mpz_mod(a, a, p);    mpz_add(b, Ay, Ay);    mpz_mod(b, b, p);    mpz_mul(t0, b, Ay);    mpz_mul(c, a, Ax);    mpz_add(c, c, t0);    mpz_neg(c, c);    mpz_mod(c, c, p);    mpz_mul(t0, a, Qx);    mpz_mul(t1, b, Qy);    mpz_add(t0, t0, t1);    mpz_add(t0, t0, c);    mpz_mul(v, v, t0);    mpz_mod(v, v, p);    mpz_mul(vd, vd, b);    mpz_mod(vd, vd, p);    mpz_clear(a); mpz_clear(b); mpz_clear(c);    mpz_clear(t0); mpz_clear(t1);}static void get_vertical(mpz_t v, mpz_t vd, mpz_t Qx, mpz_t Ax){    mpz_t t0;    mpz_init(t0);    mpz_sub(t0, Qx, Ax);    mpz_mul(v, v, t0);    mpz_mod(v, v, p);    mpz_clear(t0);}void miller(mpz_ptr res, mpz_t Px, mpz_t Py, mpz_t Qx, mpz_t Qy)//compute res = f_P(Q)//assumes q is odd{    //f_1 = 1    int m;    mpz_t v, vd;    mpz_t Zx, Zy;    mpz_init(v); mpz_init(vd);    mpz_init(Zx); mpz_init(Zy);    mpz_set_ui(v, 1);    mpz_set_ui(vd, 1);    m = mpz_sizeinbase(q, 2) - 1;    mpz_set(Zx, Px);    mpz_set(Zy, Py);    m--;    get_tangent(v, vd, Qx, Qy, Zx, Zy);    point_double(Zx, Zy, Zx, Zy);    get_vertical(vd, v, Qx, Zx);    for(;;) {	//printf("v: "); mpz_out_str(stdout, 10, v); printf("\n");	//printf("vd: "); mpz_out_str(stdout, 10, vd); printf("\n");	if (mpz_tstbit(q, m)) {	    if (!m) {		get_vertical(v, vd, Qx, Zx);		break;	    }	    get_line(v, vd, Qx, Qy, Zx, Zy, Px, Py);	    point_add(Zx, Zy, Zx, Zy, Px, Py);	    get_vertical(vd, v, Qx, Zx);	}	mpz_mul(v, v, v);	mpz_mod(v, v, p);	mpz_mul(vd, vd, vd);	mpz_mod(vd, vd, p);	get_tangent(v, vd, Qx, Qy, Zx, Zy);	point_double(Zx, Zy, Zx, Zy);	get_vertical(vd, v, Qx, Zx);	m--;    }    //printf("v: "); mpz_out_str(stdout, 10, v); printf("\n");    //printf("vd: "); mpz_out_str(stdout, 10, vd); printf("\n");    mpz_invert(vd, vd, p);    mpz_mul(res, v, vd);    mpz_mod(res, res, p);    mpz_clear(v); mpz_clear(vd);    mpz_clear(Zx); mpz_clear(Zy);}void pairing(mpz_t r, mpz_t Px, mpz_t Py, mpz_t Qx, mpz_t Qy){    miller(r, Px, Py, Qx, Qy);    mpz_powm(r, r, p1onq, p);}void test_pairing(){    mpz_t Px, Py, Qx, Qy, Rx, Ry;    mpz_t r0, r1, r2;    mpz_init(Px); mpz_init(Py);    mpz_init(Qx); mpz_init(Qy);    mpz_init(Rx); mpz_init(Ry);    mpz_init(r0); mpz_init(r1); mpz_init(r2);    point_random(Px, Py);    make_order_q(Px, Py);printf("P = ("); mpz_out_str(stdout, 10, Px); printf(", ");mpz_out_str(stdout, 10, Py); printf(")\n");    point_random(Qx, Qy);    make_order_q(Qx, Qy);printf("Q = ("); mpz_out_str(stdout, 10, Qx); printf(", ");mpz_out_str(stdout, 10, Qy); printf(")\n");    point_random(Rx, Ry);    make_order_q(Rx, Ry);printf("R = ("); mpz_out_str(stdout, 10, Rx); printf(", ");mpz_out_str(stdout, 10, Ry); printf(")\n");    pairing(r0, Px, Py, Rx, Ry);printf("e(P, R) = "); mpz_out_str(stdout, 10, r0); printf("\n");    pairing(r1, Qx, Qy, Rx, Ry);printf("e(Q, R) = "); mpz_out_str(stdout, 10, r1); printf("\n");    point_add(Px, Py, Px, Py, Qx, Qy);    pairing(r2, Px, Py, Rx, Ry);printf("e(P + Q, R) = "); mpz_out_str(stdout, 10, r2); printf("\n");    mpz_mul(r0, r0, r1);    mpz_mod(r0, r0, p);printf("e(P, R)e(Q, R) = "); mpz_out_str(stdout, 10, r0); printf("\n");    mpz_clear(Px); mpz_clear(Py);    mpz_clear(Qx); mpz_clear(Qy);    mpz_clear(Rx); mpz_clear(Ry);    mpz_clear(r0); mpz_clear(r1); mpz_clear(r2);}int main(){    int i;    gmp_randinit_default(rand_state);    mpz_init(p); mpz_init(q);    mpz_init(p1onq);    mpz_init(moq);    mpz_init(curve_a); mpz_init(curve_b);    for (i=0; i<100; i++)    {	find_curve();	test_pairing();    }    mpz_clear(p); mpz_clear(q);    mpz_clear(p1onq);    mpz_clear(curve_a); mpz_clear(curve_b);    mpz_clear(nq);    mpz_clear(moq);    return(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美国产日产图区| 青草国产精品久久久久久| 亚洲不卡在线观看| 国产精品亚洲午夜一区二区三区| 99久久久久久99| 久久久久久综合| 午夜av电影一区| 91小视频免费看| 久久久久久久久久久久久女国产乱 | 3d成人h动漫网站入口| 中文字幕不卡三区| 黄色日韩网站视频| 欧美一区二区三区影视| 一区二区三区高清不卡| 97se亚洲国产综合自在线不卡| 久久伊人蜜桃av一区二区| 午夜精彩视频在线观看不卡| 在线观看av不卡| 亚洲欧洲av在线| 成人激情开心网| 中文字幕电影一区| 国产福利一区二区三区| 久久这里只有精品6| 日本人妖一区二区| 91精品国产综合久久精品性色| 夜夜嗨av一区二区三区| 色视频一区二区| 一区二区成人在线视频| 97精品国产97久久久久久久久久久久 | 亚洲欧美日韩人成在线播放| 丰满亚洲少妇av| 欧美国产日韩a欧美在线观看| 国产精品一区二区你懂的| 欧美刺激脚交jootjob| 麻豆精品一区二区av白丝在线| 欧美日韩一级片在线观看| 亚洲成人福利片| 欧美日韩情趣电影| 五月开心婷婷久久| 日韩亚洲欧美一区二区三区| 久久精品99国产精品日本| 亚洲精品一区在线观看| 国产黄人亚洲片| 国产精品免费观看视频| 不卡av免费在线观看| 亚洲欧美成人一区二区三区| 欧美日韩一区高清| 美腿丝袜亚洲综合| 久久久精品国产免费观看同学| 国产一区二区三区四区五区美女| 久久色在线观看| 处破女av一区二区| 亚洲精选视频在线| 宅男噜噜噜66一区二区66| 麻豆精品久久久| 国产精品久久777777| 欧美影视一区在线| 波多野结衣亚洲一区| 亚洲精品中文字幕在线观看| 欧美综合久久久| 国内精品久久久久影院薰衣草| 日韩毛片一二三区| 制服丝袜亚洲色图| 成人激情综合网站| 亚洲成人免费在线观看| 2欧美一区二区三区在线观看视频| 99久久99久久精品免费看蜜桃| 亚洲va欧美va人人爽午夜| 欧美精品一区在线观看| 一本大道av伊人久久综合| 老司机免费视频一区二区三区| 亚洲天堂av一区| 亚洲精品一区二区三区香蕉| 色哟哟国产精品| 国产福利一区二区| 日韩中文字幕1| 欧美国产日韩亚洲一区| 欧美一级免费观看| 不卡一卡二卡三乱码免费网站| 手机精品视频在线观看| 国产精品欧美一区喷水| 5566中文字幕一区二区电影| 成人激情校园春色| 极品少妇一区二区三区精品视频| 一区二区日韩电影| 国产精品久久久爽爽爽麻豆色哟哟| 欧美丰满一区二区免费视频 | 中文文精品字幕一区二区| 欧美日韩大陆在线| 一本久久a久久精品亚洲| 国产成人免费网站| 久久精品99国产精品日本| 亚洲成av人综合在线观看| ㊣最新国产の精品bt伙计久久| 久久久五月婷婷| 欧美va天堂va视频va在线| 欧美日韩免费电影| 在线看国产一区二区| 成人动漫一区二区在线| 国产成人在线看| 成人蜜臀av电影| 国产一区二区精品久久| 免费在线看成人av| 一个色综合av| 亚洲国产视频一区二区| 亚洲女与黑人做爰| 中文字幕成人网| 久久久久国产一区二区三区四区 | 91国产成人在线| 91麻豆免费观看| 91丨porny丨国产| av成人老司机| 99r国产精品| 99精品久久只有精品| 97se亚洲国产综合自在线不卡| 成人精品免费看| 国产精品一二三区| 成人免费黄色在线| 99久久久免费精品国产一区二区| 豆国产96在线|亚洲| 粉嫩高潮美女一区二区三区| 成人国产精品免费| 一本色道久久综合精品竹菊| 欧美色老头old∨ideo| 欧美精品v日韩精品v韩国精品v| 欧美一区二区成人| 国产婷婷精品av在线| 专区另类欧美日韩| 一区二区三区成人在线视频| 人妖欧美一区二区| 国产黄人亚洲片| 国产成人免费视频一区| 久久精工是国产品牌吗| 国产盗摄视频一区二区三区| 91视频观看视频| 欧美一区二区在线免费播放| 69久久99精品久久久久婷婷| 久久青草国产手机看片福利盒子| 国产精品免费人成网站| 亚洲国产一区在线观看| 韩国午夜理伦三级不卡影院| 菠萝蜜视频在线观看一区| 欧美日韩黄色影视| 久久久久久久综合日本| 一区二区三区国产精华| 精品一区二区三区在线播放视频 | av高清久久久| 欧美日韩精品高清| 久久免费的精品国产v∧| 18成人在线视频| 久久99热狠狠色一区二区| 99久久婷婷国产| 日韩你懂的电影在线观看| 国产精品久久久久久久久搜平片 | 国产亚洲va综合人人澡精品| 国产精品美女久久久久久久久| 天堂久久久久va久久久久| 国产精品性做久久久久久| 国产一区二区三区黄视频| 欧美在线视频全部完| 久久亚洲春色中文字幕久久久| 麻豆91在线观看| 欧美亚洲国产一区二区三区| 国产午夜精品久久久久久久| 三级欧美韩日大片在线看| www.欧美亚洲| 久久免费偷拍视频| 日日骚欧美日韩| 色域天天综合网| 欧美高清在线视频| 久久99久久久欧美国产| 欧美亚洲综合网| 日韩理论片在线| 成人av免费观看| 久久亚洲精品国产精品紫薇| 视频一区欧美日韩| 欧洲精品一区二区| 亚洲女爱视频在线| 成人网在线免费视频| 久久综合久久鬼色中文字| 五月综合激情婷婷六月色窝| 在线看不卡av| 一级女性全黄久久生活片免费| 成人一区二区视频| 久久久久久久久久久久久夜| 久久99国产精品久久99果冻传媒| 欧美嫩在线观看| 亚洲成人综合视频| 精品污污网站免费看| 樱桃视频在线观看一区| 本田岬高潮一区二区三区| 国产欧美视频在线观看| 成人性生交大片免费看视频在线 | 91在线一区二区| 欧美激情一区不卡| 国产一区二区伦理| 日韩精品最新网址| 久久精品二区亚洲w码| 日韩亚洲欧美成人一区| 久久99久久久久|