大数的加减乘除–调用openssl库函数实现
1.下载openssl
百度网盘链接:[openssl-win64] openssl包含win64和win32
提取码:0626
打开下载的文件,一直next,一顿操作直到出现如图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;
}