OpenSSL测试-大数
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务
1. 基于OpenSSL的大数库计算2的N次方,N为你学号的后四位(5‘)
2. 基于OpenSSL的大数库计算你以及前面5位同学和后面5位同学的8位学号的乘积,N为你学号的后四位(5‘)
3. 用Python或bc命令验证计算的正确性(5’)
4. 提交代码(或代码链接)和运行结果截图
按照上节课编写的gmp程序验证是正确的
#include <openssl/bn.h>
#include <openssl/crypto.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>
int main()
{
BIGNUM* a = BN_new(), * b = BN_new(), * t = BN_new();
BN_CTX* ctx=BN_CTX_new();
BN_dec2bn(&a, "2");//赋10进制值字符串到*a
BN_dec2bn(&b, "1316");
char* p;
char* q;
p = BN_bn2dec(a);//取a的十进制值,返回一个字符串指针p
BN_exp(t,a,b,ctx);
p=BN_bn2dec(t);
printf("result=%s\n", p);
BN_dec2bn(&a, "20191310");//赋10进制值字符串到*a
BN_dec2bn(&b, "1");
BIGNUM* d=BN_new();
BN_dec2bn(&d,"1");
for(int w=0;w<11;w++)
{
BN_add(a, a, b);
p = BN_bn2dec(t);
BN_mul(d, a, d, ctx);
q = BN_bn2dec(d);
}
printf("result=%s\n", q);
BN_CTX_free(ctx);
OPENSSL_free(p);
OPENSSL_free(q);
BN_free(a);
BN_free(b);
BN_free(t);
BN_free(d);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通