centos7 编译miracl_国密SM9算法C++实现(Linux)

首先参考 Linux下编译并使用miracl密码库 该博文在linux下编译Miracl库。

编译完了,自然是要用的,下面介绍两种在C程序中使用miracl库的方法。

方法一:

1、 源码编译完后的必需的文件是两个头文件miracl.h和mirdef.h以及编译后的静态函数库miracl.a,需要在自己写的C程序中使用。

2、 输入如下代码,命名为main.c

mkdir miracl-test

cd miracl-test

nano main.c

#include "miracl.h"

voidmain()

{

big a, b, c;

miracl *mip = mirsys(5000, 16);

a=mirvar(8);

b=mirvar(7);

c=mirvar(0);

add(a, b, c);

cotnum(c, stdout);

}

将miracl.a, miracl.h, mirdef.h拷贝到与main.c所在目录,浏览一下当前项目目录下的文件

cp ../miracl/miracl.a miracl.a

cp ../miracl/miracl.h miracl.h

cp ../miracl/mirdef.h mirdef.h

ls

3、 gcc编译并输出main执行程序

gcc main.c miracl.a -o main

./main

方法二:

1、 将miracl.a放在系统对应的/usr/lib

cp /miracl/miracl.a /usr/lib/libmiracl.a

2、 在/usr/include下面建立文件夹miracl

mkdir /usr/include/miracl

3、 将miracl下的所有头文件拷贝到/usr/include/miracl

cp ./miracl/*.h /usr/include/miracl

4、 调用miracl时便可直接在自己的程序头文件中加入

#include

使用方法一中的例子,即将main.c中的第一行改为include

5、 gcc编译并输出main执行程序

gcc main.c -lmiracl -o main

./main

linux64编译代码如下:

rm *.exe

rm miracl.a

cp mirdef.h64 mirdef.h

gcc -c -m64 -O2 mrcore.c

gcc -c -m64 -O2 mrarth0.c

gcc -c -m64 -O2 mrarth1.c

gcc -c -m64 -O2 mrarth2.c

gcc -c -m64 -O2 mralloc.c

gcc -c -m64 -O2 mrsmall.c

gcc -c -m64 -O2 mrio1.c

gcc -c -m64 -O2 mrio2.c

gcc -c -m64 -O2 mrgcd.c

gcc -c -m64 -O2 mrjack.c

gcc -c -m64 -O2 mrxgcd.c

gcc -c -m64 -O2 mrarth3.c

gcc -c -m64 -O2 mrbits.c

gcc -c -m64 -O2 mrrand.c

gcc -c -m64 -O2 mrprime.c

gcc -c -m64 -O2 mrcrt.c

gcc -c -m64 -O2 mrscrt.c

gcc -c -m64 -O2 mrmonty.c

gcc -c -m64 -O2 mrpower.c

gcc -c -m64 -O2 mrsroot.c

gcc -c -m64 -O2 mrcurve.c

gcc -c -m64 -O2 mrfast.c

gcc -c -m64 -O2 mrshs.c

gcc -c -m64 -O2 mrshs256.c

gcc -c -m64 -O2 mrshs512.c

gcc -c -m64 -O2 mrsha3.c

gcc -c -m64 -O2 mrfpe.c

gcc -c -m64 -O2 mraes.c

gcc -c -m64 -O2 mrgcm.c

gcc -c -m64 -O2 mrlucas.c

gcc -c -m64 -O2 mrzzn2.c

gcc -c -m64 -O2 mrzzn2b.c

gcc -c -m64 -O2 mrzzn3.c

gcc -c -m64 -O2 mrzzn4.c

gcc -c -m64 -O2 mrecn2.c

gcc -c -m64 -O2 mrstrong.c

gcc -c -m64 -O2 mrbrick.c

gcc -c -m64 -O2 mrebrick.c

gcc -c -m64 -O2 mrec2m.c

gcc -c -m64 -O2 mrgf2m.c

gcc -c -m64 -O2 mrflash.c

gcc -c -m64 -O2 mrfrnd.c

gcc -c -m64 -O2 mrdouble.c

gcc -c -m64 -O2 mrround.c

gcc -c -m64 -O2 mrbuild.c

gcc -c -m64 -O2 mrflsh1.c

gcc -c -m64 -O2 mrpi.c

gcc -c -m64 -O2 mrflsh2.c

gcc -c -m64 -O2 mrflsh3.c

gcc -c -m64 -O2 mrflsh4.c

cp mrmuldv.g64 mrmuldv.c

gcc -c -m64 -O2 mrmuldv.c

ar rc miracl.a mrcore.o mrarth0.o mrarth1.o mrarth2.o mralloc.o mrsmall.o mrzzn2.o mrzzn3.o

ar r miracl.a mrio1.o mrio2.o mrjack.o mrgcd.o mrxgcd.o mrarth3.o mrbits.o mrecn2.o mrzzn4.o

ar r miracl.a mrrand.o mrprime.o mrcrt.o mrscrt.o mrmonty.o mrcurve.o mrsroot.o mrzzn2b.o

ar r miracl.a mrpower.o mrfast.o mrshs.o mrshs256.o mraes.o mrlucas.o mrstrong.o mrgcm.o

ar r miracl.a mrflash.o mrfrnd.o mrdouble.o mrround.o mrbuild.o

ar r miracl.a mrflsh1.o mrpi.o mrflsh2.o mrflsh3.o mrflsh4.o

ar r miracl.a mrbrick.o mrebrick.o mrec2m.o mrgf2m.o mrmuldv.o mrshs512.o mrsha3.o mrfpe.o

rm mr*.o

gcc -m64 -O2 bmark.c miracl.a -o bmark

gcc -m64 -O2 fact.c miracl.a -o fact

g++ -c -m64 -O2 big.cpp

g++ -c -m64 -O2 zzn.cpp

g++ -c -m64 -O2 ecn.cpp

g++ -c -m64 -O2 ec2.cpp

g++ -c -m64 -O2 crt.cpp

g++ -m64 -O2 mersenne.cpp big.o miracl.a -o mersenne

g++ -m64 -O2 brent.cpp big.o zzn.o miracl.a -o brent

g++ -c -m64 -O2 flash.cpp

g++ -std=c++11 -m64 -O2 -c YHex.cpp -o YHex.o

g++ -std=c++11 -m64 -O2 -c YHashEngine.cpp YHex.o -o YHashEngine.o

g++ -std=c++11 -m64 -O2 -c YSM3.cpp YHashEngine.o -o YSM3.o

g++ -std=c++11 -m64 -O2 -c Base.cpp YSM3.o -o Base.o

Parameters

g++ -std=c++11 -m64 -O2 -c KGC.cpp YSM3.o YHex.o -o KGC.o

g++ -std=c++11 -m64 -O2 -c zzn12.cpp -o zzn12.o

g++ -std=c++11 -m64 -O2 -c YSM4.cpp -o YSM4.o

g++ -m64 -O2 SM9Demo.cpp ecn.o big.o miracl.a -o pk-demo

https://blog.csdn.net/qq_33249383/article/details/88908425

https://blog.csdn.net/qq_42533853/article/details/88551757

https://blog.csdn.net/zahuopuboss/article/details/39368817

https://www.cnblogs.com/52php/p/5681711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值