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库的时候使用的方法一样,本次库不是我在本组中最先实现的,但也通过学习掌握了其使用方法。

gmlib密码算法库的更多相关文章

  1. OpenSSL密码算法库: MD5示例小程序

    OpenSSL http://www.openssl.org/ OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL 的密码算法库包含多种加密算 ...

  2. liboqs-量子安全密码算法开源C库

    liboqs是一个用于量子安全密码算法的开源C库. 一,概述 liboqs提供: 量子安全 密钥封装机制(KEM)和数字签名算法的开源实现的集合: 这些算法的通用API: 测试工具和基准测试例程. l ...

  3. Android逆向之旅---Android中锁屏密码算法解析以及破解方案

    一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机 ...

  4. Java实现7种常见密码算法

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 前面在密码学入门一文中讲解了各种常见的密码学概念.算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍 ...

  5. 信息安全-2:python之hill密码算法[原创]

    转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...

  6. 安装Python算法库

    安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...

  7. scikit-learn 支持向量机算法库使用小结

    之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm ...

  8. scikit-learn 线性回归算法库小结

    scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输 ...

  9. 算法库:Matlab与C++混合编程

    算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...

  10. 使用CPA4破解经典密码算法

    下面是一段经过经典密码算法加密的密文(加密算法未知): yvvnerujjvnywhbdvkpchfgvjtzwqsuporqfzpoekkjgziicdwwkeejdsruef   whwseyej ...

随机推荐

  1. MySQL事务(四大特征)-存储过程

    目录 一:事务 1.四大特性(ACID) 2.事物存在的必要性(真实比喻) 3.如何使用事务 4.开启事务-回滚-确认 二:事务案例实战 1.模拟消费 2.创建 3.插入数据 4.开启事务 5.修改操 ...

  2. python连接MySQL数据库实现(用户登录测试功能)pymysql

    pymysql PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务.存取过程.批量执行,实现增删改查等 # 注册 def register(cursor): usern ...

  3. 从零入门项目集成Karate和Jacoco,配置测试代码覆盖率

    解决问题 在SpringBoot项目中,如何集成Karate测试框架和Jacoco插件.以及编写了feature测试文件,怎么样配置才能看到被测试接口代码的覆盖率. 演示版本及说明 本次讲解,基于Sp ...

  4. gitlab修改代码提交后显示中文名称

    公司要求提交的代码能显示出是哪位提交的,所以要求显示中文名称以便统计工作 修改方法: 打开CMD命令提示符输入页面,输入修改指令: git config --global user.name &quo ...

  5. [OpenCV实战]15 基于深度学习的目标跟踪算法GOTURN

    目录 1 什么是对象跟踪和GOTURN 2 在OpenCV中使用GOTURN 3 GOTURN优缺点 4 参考 在这篇文章中,我们将学习一种基于深度学习的目标跟踪算法GOTURN.GOTURN在Caf ...

  6. Isaac Sim 机器人仿真器介绍、安装与 Docker [1]

    前言与参考 此文书写于: January 6, 2023, 更新于 January 6, 2023 :可能会随着时间的变化 此教程会有过时概念哦 Isaac Sim 相关参考链接: 官方文档地址 官方 ...

  7. Embracing Domain Differences in Fake News- Cross-domain Fake News Detection using Multimodal Data(AAAI21)

    一.摘要 随着社交媒体的快速发展,假新闻已经成为一个重大的社会问题,它无法通过人工调查及时解决.这激发了大量关于自动假新闻检测的研究. 大多数研究探索了基于新闻记录中不同模态信息(如文本.图像和传播网 ...

  8. 【Java应用服务体系】「序章入门」全方位盘点和总结调优技术专题指南

    专题⽬标 本系列专题的目标是希望可以帮助读者们系统和全访问掌握应⽤系统调优的思路与方案以及相关的调优工具的使用,虽然未必会覆盖目前的所有的问题场景,但是还是提供了较为丰富的案例和调优理论,会帮助大家打 ...

  9. MySQL 更新数据 不同条件(批量)更新不同值

    一般在更新时会遇到以下场景:1.全部更新:2.根据条件更新字段中的某部分内容:3.根据不同的条件更新不同的值,以下是几种场景中常用的update方法. 一.方法分类 二.具体用法 (1)根据条件更新值 ...

  10. 《《关于我把好好的c++小游戏改的很ex》》

    #undef UNICODE#undef _UNICODE#include <iostream>#include <iomanip>#include <string> ...