gmlib密码算法库
gmlib密码算法库
一、gmlib密码算法库简介
支持国密 SM4/AES-ECB/CBC/GCM,SM3,SM2签名/加密,ZUC算法 的密码库,文档页面GMLib Docs ,项目地址 gmlib,开发这个库的时候参考了很多密码库,例如 Crypto++,openssl,GmSSL,Oryx Embedded 以及 JAVA JDK,所以很多地方都能看到这些库的影子
参考链接:https://oldprincess.github.io/gmlib/
二、gmlib安装
1 工具包下载
https://github.com/oldprincess/gmlib
或者通过克隆方式
git clone https://github.com/oldprincess/gmlib.git
2 安装
cd gmlib-master
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release # 执行cmake,以Release模式进行编译
cmake --build .
若编译成功,则应该在build目录下生成结果文件,在其下的bin和lib目录为生成的测试文件与lib文件
在控制台中执行 bin 目录下编译出的测试文件gmlib-test
应当可在控制台中看到输出 test finish!,说明测试结果正确
三、代码测试
1 实现sm2加密解密
修改gmlib文件夹下的CMakeLists.txt文件,在文末加上
add_executable(gmlib-sm2_crypt
demo/demo_sm2_crypt.c
)
target_link_libraries(gmlib-sm2_crypt gmlib)
创建新工程文件夹sm2_crypt供给sm2加密解密单独使用
在新文件夹中执行命令
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
运行结束后执行make指令
在bin目录下找到gmlib-sm2_crypt可执行文件,运行./gmlib-sm2_crypt
命令
2 实现sm2签名验签
修改CMakeLists.txt文件,末尾替换刚刚添加的代码,内容如下
add_executable(gmlib-sm2_sign
demo/demo_sm2_sign.c
)
target_link_libraries(gmlib-sm2_sign gmlib)
创建文件夹命名为sm2_sign,在目录下执行编译命令
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
进入到bin文件夹./gmlib-sm2_sign
3 实现sm3加密
方法相同,首先修改CMakeLists.txt文件
add_executable(gmlib-sm3
demo/demo_sm3.c
)
target_link_libraries(gmlib-sm3 gmlib)
运行命令
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
运行加密结果:
4 实现sm4加密
首先修改CMakeLists.txt文件
add_executable(gmlib-sm4
demo/demo_sm4.c
)
target_link_libraries(gmlib-sm4 gmlib)
运行命令
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .
运行加密结果:
四、问题与反思
gmlib库算是一个比较经典的密码算法库了,调试的过程中也结合了cmake的使用,这与我之前调试gmssl 3.0库的时候使用的方法一样,本次库不是我在本组中最先实现的,但也通过学习掌握了其使用方法。