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

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

1.下载openssl

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

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

大数的运算——调用openssl库函数实现(VS2019)_第1张图片

2.为openssl做电脑环境配置

电脑设置->关于->高级设置->环境变量->Path编辑->新建->输入解压包里面bin文件的路径(完成后重启电脑!!!)
大数的运算——调用openssl库函数实现(VS2019)_第2张图片

3.vs2019建立项目

大数的运算——调用openssl库函数实现(VS2019)_第3张图片
大数的运算——调用openssl库函数实现(VS2019)_第4张图片
大数的运算——调用openssl库函数实现(VS2019)_第5张图片

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

大数的运算——调用openssl库函数实现(VS2019)_第6张图片
vc++目录-包含目录
大数的运算——调用openssl库函数实现(VS2019)_第7张图片
vc++目录-库目录
大数的运算——调用openssl库函数实现(VS2019)_第8张图片
链接器-输入-附加依赖项
大数的运算——调用openssl库函数实现(VS2019)_第9张图片

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

大数的运算——调用openssl库函数实现(VS2019)_第10张图片
大数的运算——调用openssl库函数实现(VS2019)_第11张图片

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

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

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

大数的运算——调用openssl库函数实现(VS2019)_第12张图片
解决问题1:将编译器的x86修改为x64以适应openssl

大数的运算——调用openssl库函数实现(VS2019)_第13张图片
大数的运算——调用openssl库函数实现(VS2019)_第14张图片

  • 问题2:无法打开某个.h文件
    大数的运算——调用openssl库函数实现(VS2019)_第15张图片

解决问题2:将相应文件路径添加到 c/c+±>常规->附加包含目录
大数的运算——调用openssl库函数实现(VS2019)_第16张图片

7.成功执行(ctrl+F5)

大数的运算——调用openssl库函数实现(VS2019)_第17张图片

以下为参考链接

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

本例的源代码

#include//大数运算在..\include\openssl\bn.h文件里面
#include 
#include 
#include 
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;
}

你可能感兴趣的:(密码学笔记,c++,c语言,网络安全,ssl)