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库的时候使用的方法一样,本次库不是我在本组中最先实现的,但也通过学习掌握了其使用方法。
gmlib密码算法库的更多相关文章
- OpenSSL密码算法库: MD5示例小程序
OpenSSL http://www.openssl.org/ OpenSSL整个软件包大概可以分成三个主要的功能部分:密码算法库.SSL协议库以及应用程序.OpenSSL 的密码算法库包含多种加密算 ...
- liboqs-量子安全密码算法开源C库
liboqs是一个用于量子安全密码算法的开源C库. 一,概述 liboqs提供: 量子安全 密钥封装机制(KEM)和数字签名算法的开源实现的集合: 这些算法的通用API: 测试工具和基准测试例程. l ...
- Android逆向之旅---Android中锁屏密码算法解析以及破解方案
一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机 ...
- Java实现7种常见密码算法
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 前面在密码学入门一文中讲解了各种常见的密码学概念.算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍 ...
- 信息安全-2:python之hill密码算法[原创]
转发注明出处:http://www.cnblogs.com/0zcl/p/6106513.html 前言: hill密码算法我打算简要介绍就好,加密矩阵我用教材上的3*3矩阵,只做了加密,解密没有做, ...
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- scikit-learn 支持向量机算法库使用小结
之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm ...
- scikit-learn 线性回归算法库小结
scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的不同和各自的使用场景. 线性回归的目的是要得到输 ...
- 算法库:Matlab与C++混合编程
算法库:Matlab与C++混合编程 最近做光流算法预演过程中,下载的源码中涉及到了Matlab和C++的混合编程.在同事Matlab2014的环境下,程序到是一下就运行通过了.但在我这Matlab2 ...
- 使用CPA4破解经典密码算法
下面是一段经过经典密码算法加密的密文(加密算法未知): yvvnerujjvnywhbdvkpchfgvjtzwqsuporqfzpoekkjgziicdwwkeejdsruef whwseyej ...
随机推荐
- week_11
Andrew Ng 机器学习笔记 ---By Orangestar Week_11(the Last Week!!!!) Congratulations on making it to the ele ...
- Dubbo架构设计与源码解析(三)责任链模式
作者:周可强 一.责任链模式简介 1.责任链模式定义 责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对 ...
- 【转载】解决CHM帮助文件无法从网络共享位置上直接打开的问题的方法
近日在内网共享了些书籍,但发现其中的.chm文件竟然无法正常打开,而文件百分百是正常的..症状:无法从网上邻居的共享位置上直接打开.chm文件.从网络共享位置上打开.chm文件,显示为空白或运行不正常 ...
- cs231n学习笔记——lecture6 Training Neural Networks
该博客主要用于个人学习记录,部分内容参考自:[基础]斯坦福cs231n课程视频笔记(三) 训练神经网络.[cs231n笔记]10.神经网络训练技巧(上).CS231n学习笔记-训练神经网络.整理学习之 ...
- Web3区块链DAS域名注册教程 tron trx链波卡钱包地址解析 用户名转账 ENS
而在去中心化系统中,大部分人充值.转账时,使用的都是区块链原生的长地址,比如: ETH 的地址: 0x9euo8sHip*******dHld90 CKB 的地址: ckHUEI829D******* ...
- Java学习笔记:2022年1月6日(补充)
Java学习笔记:2022年1月6日(补充) 摘要:这篇笔记主要记录了2022年1月6日下午的笔记,主要内容为Java语言中的基础操作,以及基础知识点,了解这些后基本上就可以使用Java写算法了. ...
- 数据结构与算法 -> 并查集
一.并查集概念 并查集是一种树形的数据结构,顾名思义,它用于处理一些不交集的合并及查询问题. 它支持两种操作: 查找(Find):确定某个元素处于哪个子集,单次操作时间复杂度 O(α(n)),即查询元 ...
- 疯狂吐槽 MAUI 以及 MAUI 入坑知识点
目录 窗口 窗口管理 如何限制一次只能打开一个程序 MAUI 程序安装模式 为 MAUI Blazor 设置语言 坑 ① 坑 ② 坑 ③ 配置 MAUI 项目使用管理员权限启动 问题背景 定制编译过程 ...
- 【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录
FTP服务-vsftp协议实现 我们常用的是FTP协议,主要是通过VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来, ...
- angular引入http服务创建服务注入