大数的运算——调用openssl库函数实现(VS2019)

大数的加减乘除–调用openssl库函数实现

1.下载openssl

百度网盘链接:[openssl-win64] openssl包含win64和win32
提取码:0626

打开下载的文件,一直next,一顿操作直到出现如图1的文件即可(最后需要收费直接关掉就可以了。)

图1

2.为openssl做电脑环境配置

电脑设置->关于->高级设置->环境变量->Path编辑->新建->输入解压包里面bin文件的路径(完成后重启电脑!!!)
在这里插入图片描述

3.vs2019建立项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.项目环境配置-添加openssl引用库

在这里插入图片描述
vc++目录-包含目录
在这里插入图片描述
vc++目录-库目录
在这里插入图片描述
链接器-输入-附加依赖项
在这里插入图片描述

5.在当前项目下添加源文件并改名,最后编写大数加减乘除的源文件

在这里插入图片描述
在这里插入图片描述

编写ing…
可点击链接进行学习自行编写
openssl大数运算的基本函数-函数名罗列表
openssl大数运算的简单源码-简单应用
(末尾也会放参考链接、本例的源代码–可供参考、欢迎指正)

6.运行,并根据错误解决问题

  • 问题1:均为无法解析调用的openssl函数

在这里插入图片描述
解决问题1:将编译器的x86修改为x64以适应openssl

修改前
修改后

  • 问题2:无法打开某个.h文件
    在这里插入图片描述

解决问题2:将相应文件路径添加到 c/c+±>常规->附加包含目录
在这里插入图片描述

7.成功执行(ctrl+F5)

在这里插入图片描述

以下为参考链接

1.错误的解决办法
无法打开.lib文件和.h文件
2.大数运算源文件编写的学习-了解需要的openssl库函数
openssl大数运算的基本函数-函数名罗列表
openssl大数运算的简单源码-简单应用
3.编译器环境的配置(vs2019与dev-c++)
vs2019调用openssl库文件环境配置
dev-c++调用openssl库文件的环境配置

本例的源代码

#include<openssl/bn.h>//大数运算在..\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_dec2bn(&a, "98765432100000");//赋10进制值字符串到*a
	BN_dec2bn(&b, "12345");
	char* p;
	printf("\n-------【大数的加减乘除】------\n");
	//输出大数a
	p = BN_bn2dec(a);//取a的十进制值,返回一个字符串指针p
	printf("a=%s\n", p);
	//输出大数b
	p = BN_bn2dec(b);
	printf("b=%s\n\n", p);
	//计算t=a+b
	BN_add(t, a, b);
	p = BN_bn2dec(t);
	printf("a+b=%s\n", p);
	//计算t=a-b
	BN_sub(t, a, b);
	p = BN_bn2dec(t);
	printf("a-b=%s\n", p);
	//t=a*b
	BN_CTX* ctx = BN_CTX_new();
	BN_mul(t, a, b, ctx);
	p = BN_bn2dec(t);
	printf("a*b=%s\n", p);
	//a = b*t + r
	BIGNUM* r = BN_new();
	BN_div(t, r, a, b, ctx);
	p = BN_bn2dec(t);
	char* q;
	q = BN_bn2dec(r);
	printf("a÷b=%s...%s\n\n", p, q);
	//释放
	BN_CTX_free(ctx);
	OPENSSL_free(p);
	BN_free(a);
	BN_free(b);
	BN_free(t);
	BN_free(r);
	return 0;
}

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值