标签:大数 BN CTX openssl free char new include
1、基于OPENSSL的大数库编写测试代码测试大数运算,计算2的N次方,N为你学号的后四位
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
int main()
{
BN_CTX *r[3];
BIGNUM *a;
BIGNUM *b;
BIGNUM *c;
char s[512+1] = "2";
char t[512+1] = "2DC";
char *x;
r[0] = BN_CTX_new();
a = BN_new();
b = BN_new();
c = BN_new();
BN_hex2bn(&a, s);
BN_hex2bn(&b, t);
BN_exp(c, a, b, r[0]);//r=pow(a,b)
x = BN_bn2dec(c);
puts(x);
BN_free(a);
BN_free(b);
BN_free(c);
BN_CTX_free(r[0]);
free(x);
return 0;
}
2、 基于OpenSSL的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位
我的学号是20191211
前面5位同学是20191210、20191209、20191208、20191207、20191206
后面5位同学是20191212、20191213、20191214、20191215、20191216
测试代码为:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
int main()
{
BN_CTX *r[3];
BIGNUM *a;
BIGNUM *b;
BIGNUM *c;
char s[512+1] = "2019121620191217201912182019121920191220";
char t[512+1] = "209121120191212201912132019121420191215";
char *x;
r[0] = BN_CTX_new();
a = BN_new();
b = BN_new();
c = BN_new();
BN_dec2bn(&a, s);
BN_dec2bn(&b, t);
BN_mul(c, a, b, r[0]);//r=mul(a,b)
x = BN_bn2dec(c);
puts(x);
BN_free(a);
BN_free(b);
BN_free(c);
BN_CTX_free(r[0]);
free(x);
return 0;
}
测试结果为:
标签:大数,BN,CTX,openssl,free,char,new,include 来源: https://www.cnblogs.com/20191211yss/p/16262337.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。