-
基于OpenSSL的大数库计算2的N次方,N为你学号的后四位(5‘)
-
基于OpenSSL的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位(5‘)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
int main()
{
BIGNUM * bn_rlt;
BIGNUM * bn_1;
BIGNUM * bn_1301;
BN_CTX * ctx;
char* show;
ctx=BN_CTX_new();
bn_rlt=BN_new();
bn_1=BN_new();
bn_1301=BN_new();
BN_dec2bn(&bn_rlt,"1");
BN_dec2bn(&bn_1,"1");
BN_dec2bn(&bn_1301,"20191301");
for(int i=1301;i<=1305;i++){
BN_mul(bn_rlt,bn_rlt,bn_1301,ctx);
BN_add(bn_1301,bn_1301,bn_1);
}
for(int i=1228;i<=1232;i++){
BN_mul(bn_rlt,bn_rlt,bn_1301,ctx);
BN_add(bn_1301,bn_1301,bn_1);
}
show=BN_bn2dec(bn_rlt);
printf("b=%s\n",show);
BN_free(bn_rlt);
BN_free(bn_1);
BN_free(bn_1301);
BN_CTX_free(ctx);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/bn.h>
int main()
{
BIGNUM * bn_rlt;
BIGNUM * bn_2;
BN_CTX * ctx;
char* show;
ctx=BN_CTX_new();
bn_rlt=BN_new();
bn_2=BN_new();
BN_dec2bn(&bn_rlt,"1");
BN_dec2bn(&bn_2,"2");
for(int i=0;i<1301;i++){
BN_mul(bn_rlt,bn_rlt,bn_2,ctx);
}
show=BN_bn2dec(bn_rlt);
printf("%s\n",show);
BN_free(bn_rlt);
BN_free(bn_2);
BN_CTX_free(ctx);
return 0;
}
用Python或bc命令验证计算的正确性(5’)