您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ BN_lshift函数代码示例

51自学网 2021-06-01 19:51:59
  C++
这篇教程C++ BN_lshift函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中BN_lshift函数的典型用法代码示例。如果您正苦于以下问题:C++ BN_lshift函数的具体用法?C++ BN_lshift怎么用?C++ BN_lshift使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了BN_lshift函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: BN_solinas2bn

int BN_solinas2bn(const BN_SOLINAS *solinas, BIGNUM *bn){	int ret = 0;	BIGNUM *tmp = NULL;	if (!solinas || !bn) {		BNerr(BN_F_BN_SOLINAS2BN, ERR_R_MALLOC_FAILURE);		return 0;	}	if (solinas->b <= 0 || solinas->a <= solinas->b		|| (solinas->s != 1 && solinas->s != -1)		|| (solinas->c != 1 && solinas->c != -1)) {		BNerr(BN_F_BN_SOLINAS2BN, BN_R_INVALID_SOLINAS_PARAMETERS);		return 0;	}	if (!(tmp = BN_new())) {		BNerr(BN_F_BN_SOLINAS2BN, ERR_R_MALLOC_FAILURE);		goto end;	}	BN_one(tmp);	if (!BN_lshift(bn, tmp, solinas->a)) {		BNerr(BN_F_BN_SOLINAS2BN, ERR_R_BN_LIB);		goto end;	}	if (!BN_lshift(tmp, tmp, solinas->b)) {		BNerr(BN_F_BN_SOLINAS2BN, ERR_R_BN_LIB);		goto end;	}	if (!BN_add_word(tmp, solinas->c)) {		BNerr(BN_F_BN_SOLINAS2BN, ERR_R_BN_LIB);		goto end;	}	if (solinas->s > 0) {		if (!BN_add(bn, bn, tmp)) {			BNerr(BN_F_BN_SOLINAS2BN, ERR_R_BN_LIB);			goto end;		}	} else {		if (!BN_sub(bn, bn, tmp)) {			BNerr(BN_F_BN_SOLINAS2BN, ERR_R_BN_LIB);			goto end;		}	}	/* check if it is a prime */	ret = 1;end:	BN_free(tmp);	return ret;}
开发者ID:zsdev2015,项目名称:GmSSL,代码行数:58,


示例2: BN_mod

/* rem != m */int BN_mod(BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx){#if 0 /* The old slow way */	int i, nm, nd;	BIGNUM *dv;	if(BN_ucmp(m, d) < 0)		{ return ((BN_copy(rem, m) == NULL) ? 0 : 1); }	BN_CTX_start(ctx);	dv = BN_CTX_get(ctx);	if(!BN_copy(rem, m)) { goto err; }	nm = BN_num_bits(rem);	nd = BN_num_bits(d);	if(!BN_lshift(dv, d, nm - nd)) { goto err; }	for(i = nm - nd; i >= 0; i--)	{		if(BN_cmp(rem, dv) >= 0)		{			if(!BN_sub(rem, rem, dv)) { goto err; }		}		if(!BN_rshift1(dv, dv)) { goto err; }	}	BN_CTX_end(ctx);	return (1);err:	BN_CTX_end(ctx);	return (0);#else	return (BN_div(NULL, rem, m, d, ctx));#endif}
开发者ID:FFTEAM,项目名称:oscam,代码行数:35,


示例3: BN_div_word

BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w)  {  BN_ULONG ret = 0;  int i, j;  bn_check_top(a);  w &= BN_MASK2;  if (!w)    /* actually this an error (division by zero) */    return (BN_ULONG)-1;  if (a->top == 0)    return 0;  /* normalize input (so bn_div_words doesn't complain) */  j = BN_BITS2 - BN_num_bits_word(w);  w <<= j;  if (!BN_lshift(a, a, j))    return (BN_ULONG)-1;  for (i=a->top-1; i>=0; i--)    {    BN_ULONG l,d;        l=a->d[i];    d=bn_div_words(ret,l,w);    ret=(l-((d*w)&BN_MASK2))&BN_MASK2;    a->d[i]=d;    }  if ((a->top > 0) && (a->d[a->top-1] == 0))    a->top--;  ret >>= j;  bn_check_top(a);  return(ret);  }
开发者ID:yyyyyao,项目名称:Slicer3-lib-mirrors,代码行数:35,


示例4: BN_div

int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,	   BN_CTX *ctx)	{	int i,nm,nd;	int ret = 0;	BIGNUM *D;	bn_check_top(m);	bn_check_top(d);	if (BN_is_zero(d))		{		BNerr(BN_F_BN_DIV,BN_R_DIV_BY_ZERO);		return(0);		}	if (BN_ucmp(m,d) < 0)		{		if (rem != NULL)			{ if (BN_copy(rem,m) == NULL) return(0); }		if (dv != NULL) BN_zero(dv);		return(1);		}	BN_CTX_start(ctx);	D = BN_CTX_get(ctx);	if (dv == NULL) dv = BN_CTX_get(ctx);	if (rem == NULL) rem = BN_CTX_get(ctx);	if (D == NULL || dv == NULL || rem == NULL)		goto end;	nd=BN_num_bits(d);	nm=BN_num_bits(m);	if (BN_copy(D,d) == NULL) goto end;	if (BN_copy(rem,m) == NULL) goto end;	/* The next 2 are needed so we can do a dv->d[0]|=1 later	 * since BN_lshift1 will only work once there is a value :-) */	BN_zero(dv);	if(bn_wexpand(dv,1) == NULL) goto end;	dv->top=1;	if (!BN_lshift(D,D,nm-nd)) goto end;	for (i=nm-nd; i>=0; i--)		{		if (!BN_lshift1(dv,dv)) goto end;		if (BN_ucmp(rem,D) >= 0)			{			dv->d[0]|=1;			if (!BN_usub(rem,rem,D)) goto end;			}/* CAN IMPROVE (and have now :=) */		if (!BN_rshift1(D,D)) goto end;		}	rem->neg=BN_is_zero(rem)?0:m->neg;	dv->neg=m->neg^d->neg;	ret = 1; end:	BN_CTX_end(ctx);	return(ret);	}
开发者ID:EddieGarmon,项目名称:netduino-netmf,代码行数:60,


示例5: test_div

inttest_div(BIO *bp, BN_CTX *ctx){	BIGNUM a, b,c, d, e;	int i;	int rc = 1;	BN_init(&a);	BN_init(&b);	BN_init(&c);	BN_init(&d);	BN_init(&e);	for (i = 0; i < num0 + num1; i++) {		if (i < num1) {			BN_bntest_rand(&a, 400, 0, 0);			BN_copy(&b, &a);			BN_lshift(&a, &a, i);			BN_add_word(&a, i);		} else			BN_bntest_rand(&b, 50 + 3*(i - num1), 0, 0);		a.neg = rand_neg();		b.neg = rand_neg();		BN_div(&d, &c, &a, &b, ctx);		if (bp != NULL) {			if (!results) {				BN_print(bp, &a);				BIO_puts(bp, " / ");				BN_print(bp, &b);				BIO_puts(bp, " - ");			}			BN_print(bp, &d);			BIO_puts(bp, "/n");			if (!results) {				BN_print(bp, &a);				BIO_puts(bp, " % ");				BN_print(bp, &b);				BIO_puts(bp, " - ");			}			BN_print(bp, &c);			BIO_puts(bp, "/n");		}		BN_mul(&e, &d, &b, ctx);		BN_add(&d, &e, &c);		BN_sub(&d, &d, &a);		if (!BN_is_zero(&d)) {			fprintf(stderr, "Division test failed!/n");			rc = 0;			break;		}	}	BN_free(&a);	BN_free(&b);	BN_free(&c);	BN_free(&d);	BN_free(&e);	return (rc);}
开发者ID:NSGod,项目名称:openbsd,代码行数:59,


示例6: hit2hit_key

/* * /fn hit2hit_key * * /param hit		128-bit Host Identity Tag * /param hit_key	buffer for storing HIT_KEY; should be DHT_VAL_SIZE long * * /brief Create a HIT_KEY from a HIT by taking the middle 100 bits and adding *        padding. */void hit2hit_key(hip_hit *hit, __u8 *hit_key){  BIGNUM *hk = BN_bin2bn((const unsigned char *)hit, HIT_SIZE, NULL);  BN_lshift(hk, hk, 28);       /* truncate to 100-bit number */  memset(hit_key, 0, DHT_KEY_SIZE);  bn2bin_safe(hk, hit_key, 16);       /* lower 28-bits now zeroes */  BN_free(hk);}
开发者ID:carriercomm,项目名称:openhip,代码行数:17,


示例7: test_lshift

int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)	{	BIGNUM *a,*b,*c,*d;	int i;	b=BN_new();	c=BN_new();	d=BN_new();	BN_one(c);	if(a_)	    a=a_;	else	    {	    a=BN_new();	    BN_bntest_rand(a,200,0,0); /**/	    a->neg=rand_neg();	    }	for (i=0; i<num0; i++)		{		BN_lshift(b,a,i+1);		BN_add(c,c,c);		if (bp != NULL)			{			if (!results)				{				BN_print(bp,a);				BIO_puts(bp," * ");				BN_print(bp,c);				BIO_puts(bp," - ");				}			BN_print(bp,b);			BIO_puts(bp,"/n");			}		BN_mul(d,a,c,ctx);		BN_sub(d,d,b);		if(!BN_is_zero(d))		    {		    fprintf(stderr,"Left shift test failed!/n");		    fprintf(stderr,"a=");		    BN_print_fp(stderr,a);		    fprintf(stderr,"/nb=");		    BN_print_fp(stderr,b);		    fprintf(stderr,"/nc=");		    BN_print_fp(stderr,c);		    fprintf(stderr,"/nd=");		    BN_print_fp(stderr,d);		    fprintf(stderr,"/n");		    return 0;		    }		}	BN_free(a);	BN_free(b);	BN_free(c);	BN_free(d);	return(1);	}
开发者ID:froggatt,项目名称:edimax-br-6528n,代码行数:57,


示例8: Java_java_math_NativeBN_BN_1shift

extern "C" void Java_java_math_NativeBN_BN_1shift(JNIEnv* env, jclass, jlong r, jlong a, int n) {  if (!twoValidHandles(env, r, a)) return;  if (n >= 0) {    BN_lshift(toBigNum(r), toBigNum(a), n);  } else {    BN_rshift(toBigNum(r), toBigNum(a), -n);  }  throwExceptionIfNecessary(env);}
开发者ID:AlexeyBychkov,项目名称:robovm,代码行数:9,


示例9: bn_check_top

static BIGNUM *euclid(BIGNUM *a, BIGNUM *b)	{	BIGNUM *t;	int shifts=0;	bn_check_top(a);	bn_check_top(b);	/* 0 <= b <= a */	while (!BN_is_zero(b))		{		/* 0 < b <= a */		if (BN_is_odd(a))			{			if (BN_is_odd(b))				{				if (!BN_sub(a,a,b)) goto err;				if (!BN_rshift1(a,a)) goto err;				if (BN_cmp(a,b) < 0)					{ t=a; a=b; b=t; }				}			else		/* a odd - b even */				{				if (!BN_rshift1(b,b)) goto err;				if (BN_cmp(a,b) < 0)					{ t=a; a=b; b=t; }				}			}		else			/* a is even */			{			if (BN_is_odd(b))				{				if (!BN_rshift1(a,a)) goto err;				if (BN_cmp(a,b) < 0)					{ t=a; a=b; b=t; }				}			else		/* a even - b even */				{				if (!BN_rshift1(a,a)) goto err;				if (!BN_rshift1(b,b)) goto err;				shifts++;				}			}		/* 0 <= b <= a */		}	if (shifts)		{		if (!BN_lshift(a,a,shifts)) goto err;		}	bn_check_top(a);	return(a);err:	return(NULL);	}
开发者ID:RyunosukeOno,项目名称:rayjack,代码行数:56,


示例10: test_div

int test_div(BIO *bp, BN_CTX *ctx){    BIGNUM *a, *b, *c, *d, *e;    int i;    a = BN_new();    b = BN_new();    c = BN_new();    d = BN_new();    e = BN_new();    for (i = 0; i < num0 + num1; i++) {        if (i < num1) {            BN_bntest_rand(a, 400, 0, 0);            BN_copy(b, a);            BN_lshift(a, a, i);            BN_add_word(a, i);        } else            BN_bntest_rand(b, 50 + 3 * (i - num1), 0, 0);        a->neg = rand_neg();        b->neg = rand_neg();        BN_div(d, c, a, b, ctx);        if (bp != NULL) {            if (!results) {                BN_print(bp, a);                BIO_puts(bp, " / ");                BN_print(bp, b);                BIO_puts(bp, " - ");            }            BN_print(bp, d);            BIO_puts(bp, "/n");            if (!results) {                BN_print(bp, a);                BIO_puts(bp, " % ");                BN_print(bp, b);                BIO_puts(bp, " - ");            }            BN_print(bp, c);            BIO_puts(bp, "/n");        }        BN_mul(e, d, b, ctx);        BN_add(d, e, c);        BN_sub(d, d, a);        if (!BN_is_zero(d)) {            fprintf(stderr, "Division test failed!/n");            return 0;        }    }    BN_free(a);    BN_free(b);    BN_free(c);    BN_free(d);    BN_free(e);    return (1);}
开发者ID:Adallom,项目名称:openssl,代码行数:56,


示例11: fermat_question_ask

static RSA *fermat_question_ask(const RSA *rsa){  BIGNUM    *a = BN_new(),    *b = BN_new(),    *a2 = BN_new(),    *b2 = BN_new();  BIGNUM *n = rsa->n;  BIGNUM    *tmp = BN_new(),    *rem = BN_new(),    *dssdelta = BN_new();  BN_CTX *ctx = BN_CTX_new();  RSA *ret = NULL;  BN_sqrtmod(tmp, rem, n, ctx);  /* Δ = |p - q| = |a + b - a + b| = |2b| > √N  2
C++ BN_lshift1函数代码示例
C++ BN_is_one函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。