Tongsuo学习(一)

文章详细描述了Tongsuo的编译安装过程,包括配置选项、编译、安装步骤及测试。在未优化和优化后的SM2算法对比中,发现性能提升不明显,原因是使用了未经优化的库文件。通过更新动态库路径至优化后的库,实现了显著的性能改善。
摘要由CSDN通过智能技术生成

一、Tongsuo的编译安装以及测试

  1. 首先解压源码文件,并在进入源码文件的终端,通过如下的代码进行编译

    #配置选项
    ./config --prefix=/home/mark/tongsuo-no_opt -Wl,-rpath,/usr/lib 
    #其中/home/mark/tongsuo-no_opt 是指定openssl的安装目录
    #-Wl,-rpath,/usr/lib 指定openssl二进制依赖的libcrypto.so 和 libssl.so 目录 相当于设置环境变量
    #但是在后续的调用二进制程序中,上述的路径并没有被直接指定,导致了错误?
    #注意,这里遍历的是没有经过优化过的代码
    

在这里插入图片描述

从图中可见,该优化特性未被打开

  1. 执行make等待编译

  2. 执行make install, 这里可以根据自己的不同需求去进行安装

    • 只安装library文件 make install_runtime_libs
    • 安装头文件 make install_dev
    • 只安装铜锁二进制程序和其依赖的library文件 make install_programs

    这里我执行make install

    最终结果如下:
    在这里插入图片描述

    图中,可见在目录中编译了4个文件夹分别为bin,include,lib64,ssl

    其中bin文件夹中存放的是二进制可执行程序

  3. 对二进制程序进行测试

在这里插入图片描述

发现出现报错,这是因为并没有在环境变量中导入openssl的两个共享库

解决方法如下:

  • 永久:通过修改/etc/ld.so.conf文件添加动态库的路径,然后通过命令行sudo ldconfig -v使其生效

解决之后再次测试,tongsuo二进制程序正确运行,配置成功

在这里插入图片描述

  1. 编译优化过的铜锁程序

在这里插入图片描述

配置过程同1,不过加入了enable-ec_sm2p_64_gcc_128 命令,然后编译安装过程同上

测试结果如下:

在这里插入图片描述

比较两次结果如下:

Eventsm2-optsm2-no-opt
Sign3728.5/s3606.8/s
Verify4189.9/s4104.0/s

可以发现,优化的sm2算法和未优化的sm2算法在签名和验签性能上差别不大,没有达到理论的性能提升。

出现上述现象的可能原因:

  • 在测试优化SM2算法时,使用的是之前未经优化编译的共享库文件
  • to be continued …

解决方法:

  • 将之前ld.so.conf中的库文件目录更新为优化过的库文件目录(不过这样的话,之前用来未优化的sm2算法的结果也会有所更改)

最终优化结果如下:

在这里插入图片描述

Eventsm2-optsm2-no-optImprovemnet
Sign16225.2/s3606.8/s+449.9%
Verify8199.8/s4104.9/s+199.8%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值