openssl大数

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为你学号的后四位

#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] = "2019120520191206201912072019120820191209";
char t[512+1] = "2091210201912111912122019121320191214";
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;
}


3、bc验证

posted @ 2022-05-12 14:27  爱冒险的丁丁  阅读(48)  评论(0编辑  收藏  举报