首页 > 其他分享 >课设第一周进展(gmlib)

课设第一周进展(gmlib)

时间:2022-11-18 21:35:30浏览次数:63  
标签:文件 CMakeLists 课设 第一周 gmlib demo sm2 txt

安装gmlib

gmlib简介

该密码库为支持国密 SM4/AES-ECB/CBC/GCM,SM3,SM2签名/加密,ZUC算法 的密码库,开发这个库的时候参考了很多密码库,例如 Crypto++,openssl,GmSSL,Oryx Embedded 以及 JAVA JDK,所以很多地方都能看到这些库的影子

gmlib的安装

  • 拷贝 gmlib 项目至本机(也可以通过下载zip包的方式拷贝)

git clone https://github.com/oldprincess/gmlib.git

  • 进入gmlib文件夹

cd gmlib

  • 创建 build 目录,避免污染源代码
mkdir build
cd build
  • 执行cmake,以Release模式编译
# linux
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .

编译成功之后就会在build文件夹中产生bin和lib文件夹

并且会在bin目录下生成一个测试文件:gmlib-test

随后若看见test finish!则表示成功

gmlib使用

使用此库事先需学习部分Cmake知识,现附链接如下

Cmake学习入

gmlib实现sm2算法

sm2加解密

  • 修改CMakeLists.txt文件

修改gmlib文件夹下的CMakeLists.txt文件内容如下

在文件末尾修改代码如下:

add_executable(gmlib-sm2_crypt
    demo/demo_sm2_crypt.c
)

target_link_libraries(gmlib-sm2_crypt gmlib)
  • 编译程序

创建文件夹sm2_crypt防止文件混乱

在sm2_crypt文件夹中执行以下指令

cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .

随后使用make指令进行编译程序

运行bin文件夹下的gmlib-sm2_crypt文件:

sm2签名验签

  • 修改CMakeLists.txt文件

和加解密修改方式一样在CMakeLists.txt文件末尾修改代码内容如下

add_executable(gmlib-sm2_sign
    demo/demo_sm2_sign.c
)

target_link_libraries(gmlib-sm2_sign gmlib)
  • 编译

编译过程和sm2加解密一样在此不过多赘述,只是在最开始创建文件命名为sm2_sign即可

运行结果:

gmlib实现sm3算法

  • 修改CMakeLists.txt文件

和加解密修改方式一样在CMakeLists.txt文件末尾修改代码内容如下

add_executable(gmlib-sm3
        demo/demo_sm3.c
)

target_link_libraries(gmlib-sm3 gmlib)
  • 编译

编译过程和sm2加解密一样在此不过多赘述,只是在最开始创建文件命名为sm3即可

运行结果:

sm4算法实现

  • 修改CMakeLists.txt文件

和加解密修改方式一样在CMakeLists.txt文件末尾修改代码内容如下

add_executable(gmlib-sm4
        demo/demo_sm4.c
)

target_link_libraries(gmlib-sm4 gmlib)
  • 编译

编译过程和sm2加解密一样在此不过多赘述,只是在最开始创建文件命名为sm4即可

运行结果:

ZUC算法实现

  • 此算法编译运行步骤和前面SM2/3/4一模一样,在此不做赘述了,直接看运行结果吧

gmlib代码库链接:gmlib库

标签:文件,CMakeLists,课设,第一周,gmlib,demo,sm2,txt
From: https://www.cnblogs.com/1314xhuan/p/16904952.html

相关文章

  • 课设第二周
    python通过Cryptodome使用AES加密数据fromCrypto.CipherimportAESfromCrypto.Randomimportget_random_bytesdata=b'secretdata'key=get_random_bytes(16)......
  • 课设第一周进展(snowland-smx)
    安装snowland-smxsnowland-smx简介snowland-smx是python实现的国密套件,对标python实现的gmssl,包含国密SM2,SM3,SM4,SM9,ZUC等。其代码实现效率上优于gmssl,接口设计上也......
  • 第一周课程设计任务完成进度
    本周计划完成的任务本周实际完成情况(代码,文档,程序运行截图...),未完成计划的原因?如何改进?本周遇到的问题与解决过程(要详细)本周计划完成的任务完成项目的码云仓库搭......
  • 信息安全课程设计第一周总结
    基于密码算法库的国密算法支持研究一、任务计划完成LibTomCrypt、Crypto++的配置安装和使用二、任务完成情况(一)配置openeuler,并使用ssh命令做到文件传输(二)配置C语......
  • 程序猿之梦!星辰大海的前端建站之路「第一周」
    大家好,我是寒草......
  • Mininet 第一周
    Mininet是一个可以在有限资源的普通电脑上快速建立大规模SDN原型系统的网络仿真工具。该系统由虚拟的终端节点(End-Host)、OpenFlow交换机、控制器(也支持远程控制器)组成,这使......
  • 第一周 学习进度汇报
    第一周本周学习进度汇报:理论学习了解了Attention机制。第一次看Transformer论文看不懂绕了弯路,经过老师提醒便改正方向。参考学习资料有:李宏毅老师机器学习课自注意力......
  • LeetCode刷题第一周
    数组:内存空间连续,数据类型统一,下标从0开始二分查找704classSolution{publicintsearch(int[]nums,inttarget){//方法一:暴力解法//for......
  • Internet History, Technology, and Security课程学习第一周总结
    Summary1.Whatwastheprimaryreason(s)forthedevelopmentofstoreandforwardnetworksbytheacademiccommunity?Bybreakingcommunicationsthattravers......
  • 中国(北方)大学生程序设计训练赛(第一周)(Problem E: Water Problem-矩阵快速幂)
    已知f(1),f(2),n,f(n+1)=f(n)+f(n-1)+sin(n*Pi/2),(n>=2)求f(n)矩阵快速幂,周期乘4个矩阵#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#incl......