GmSSL3.0密码算法库
GmSSL3.0密码算法库
一、开发背景
GmSSL 3.0版本具有更快、更小、更安全的特点,相比于GmSSL 2.0我们主要从以下方向进行改进:
采用CMake替代目前基于Perl的构建系统
支持Linux/Windows/macOS/Android/iOS等主流操作系统,移除对嵌入式OS等其他系统的支持
支持X86/ARM/RISC-V,针对上述平台64位指令集做汇编层面的优化
将C语言标准由目前的C89更新为最新的C99或C11,及部分GCC特性,移除对Perl的依赖
移除不安全的算法和协议,仅支持国密算法和主流国际算法,提升对AEAD、TLS 1.3等新标准的默认支持力度
提升密码算法抗木马、抗侧信道攻击的安全性
降低运行时堆内存的使用量,降低总体二进制代码体积
提供特定于国密算法和协议的统一的多语言(支持Rust/Java/Go/PHP)封装
保持和OpenSSL最新版本的兼容性,实现GmSSL和OpenSSL在同一个软件中的共存
二、功能
GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmSSL可以替代应用中的OpenSSL组件,并使应用自动具备基于国密的安全能力。GmSSL项目采用对商业应用友好的类BSD开源许可证,开源且可以用于闭源的商业应用。
GmSSL3.0密码算法库的更多相关文章
- 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 ...
随机推荐
- ORM数据库查询优化only与defer(select_related与prefetch_related)
目录 一:数据库查询优化 1.ORM语句特点 2.only 3.defer 4.only与defer区别 5.select_related与prefetch_related 6.select_rela ...
- loadrunner11安装时提示缺少Microsoft Visual c++2005 sp1组件的解决办法
解决方法: 1.进入loadrunner-11安装程序\loadrunner-11\Additional Components\IDE Add-Ins\MS Visual Studio .NET文件夹 ...
- gitlab修改代码提交后显示中文名称
公司要求提交的代码能显示出是哪位提交的,所以要求显示中文名称以便统计工作 修改方法: 打开CMD命令提示符输入页面,输入修改指令: git config --global user.name &quo ...
- [编程基础] C++多线程入门10-packaged_task示例
原始C++标准仅支持单线程编程.新的C++标准(称为C++11或C++0x)于2011年发布.在C++11中,引入了新的线程库.因此运行本文程序需要C++至少符合C++11标准. 文章目录 10 pa ...
- Windows下使用vscode连接Linux服务器进行C++代码运行与调试
参考链接: vscode + SSH 配置 https://blog.csdn.net/irober/article/details/112724986 launch.json + tasks.jso ...
- 使用C语言编程的7个步骤
版权声明 本文作者:main工作室 本文链接:https://www.cnblogs.com/main-studio/p/17034891.html 版权声明:本文为 博客园 博主「main工作室」的 ...
- java代码的基本组成
我们可以通过上一篇博客写的内容来分析java代码的组成 java代码的组成我们可以大致分成4个部分 一.标识符 除了关键字(有颜色的,可以看到上方图片)以外,自己们写的单词(黑色部分的),如MyJav ...
- CLISP学习(二)
它是一门函数式语言,你要用函数的思维来思考. 只不过与数学的表达不同的是,数学里的函数是在括号外 f(x) ,而lisp是在括号内,以列表的形式(f x), cos(x) --> (cos x ...
- Qt界面设计--侧边栏隐藏和滑出
在日常项目中,界面布局上经常使用到侧边栏的方式,在侧边栏放置控件进行复合使用,可以实现子功能界面的隐藏和滑出,效果展示如下: 界面控件很简单,主界面QWidget,侧边栏也用一个QWidget和一个按 ...
- Linux c 检测当前网卡是否已经启动
思路: 1.socket 建立一个数据报套接字. 2.定义一个struct ifreq ifr 结构体.将网络名称如"eth0" 赋值给ifr结构体的ifr.ifr_name. 3 ...