课设第一周进展(gmlib)
安装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知识,现附链接如下
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库