国密算法解析

news2024/12/23 23:06:05

国密算法即国家密码局认定的国产密码算法。

  • 国密算法是商用密码,仅能用于商业用途。
  • 国密算法是一套标准,由国家密码局制定的规范,凡是符合的,都可以称之为国密算法。
  • 国密算法暂无官方的代码实现,企业可以自己编码实现,并申请国家密码局认证,通过后即被认可。
  • SM系列密码算法是国密算法的一种,SM是商密的缩写,SM后的序号分别表示了不同种类的密码(应用场景不同)。
  • 国密算法对标国际算法,国际算法由美国的安全局发布,是现今最通用的商用算法,也是在各种密码学教材中重点介绍的。

SM系列国密算法

SM系列算法主要有SM1,SM2,SM3,SM4,SM7和SM9。SM1和SM7算法没有公开,主要用于芯片集成(采用硬件实现,直接嵌入),如智能IC卡、加密机、身份证和一卡通等。目前应用较多的是SM2、SM3和SM4算法,采用软件实现,这三者用法不一。

  • SM2属于非对称加密算法,使用公钥加密,私钥解密,在安全性和运算速度方面要优于RSA算法。
  • SM3属于不可逆加密算法,类似于md5,常用于签名。
  • SM4属于对称加密算法,可用于替代DES/AES等国际算法,SM4算法与AES算法具有相同的密钥长度和分组长度,都是128位。

国密算法标准

由国家密码管理局管理和发布,国家密码管理局的官方网站是:

https://www.oscca.gov.cn/sca/index.shtml

国密算法标准文档查询:

https://www.oscca.gov.cn/app-zxfw/zxfw/bzgfcx.jsp

可以提供电子认证服务的机构名单:

https://www.oscca.gov.cn/app-zxfw/xzspsx/dzzwdzrzfuwujigouml.jsp?channel_code=c100144

国密算法的开源实现

目前比较有名的是北京大学的关志研究员在 GitHub 上的开源项目,毕竟涉及安全,背书还是很重要的。

全套的国密算法标准文档:

GitHub - guanzhi/GM-Standards: 中华人民共和国密码行业标准(GM/T)文本

GMSSL,一个类似 OpenSSL 的商密算法工具。

https://www.gmssl.cn/gmssl/index.jsp

GmSSL项目也是由北京大学关志研究员的密码学研究组开发维护,项目源码托管于GitHub:

GitHub - guanzhi/GmSSL: 支持国密SM2/SM3/SM4/SM9/SSL的密码工具箱

GmSSL是由北京大学自主开发的国产商用密码开源库,实现了对国密算法、标准和安全通信协议的全面功能覆盖,支持包括移动端在内的主流操作系统和处理器,支持密码钥匙、密码卡等典型国产密码硬件,提供功能丰富的命令行工具及多种编译语言编程接口。

GmSSL是从鼎鼎大名的开源安全库 OpenSSL fork而来,研究其源码可以看出它是基于OpenSSL 1.1.0d开发。GmSSL与OpenSSL保持接口兼容,理论上使用OpenSSL库的产品,可以直接使用GmSSL替换。GmSSL项目采用对商业应用友好的类BSD开源许可证,无论是在开源项目,还是闭源的商业应用中,都可以放心使用,不必担心授权问题。

其他实现

java 代码参考链接 https://github.com/hou-xx/encryption-and-decryption 的 SmDemo.javaSmDemoForJs.java
前端代码(h5+js)参考链接 https://github.com/hou-xx/SM2-front

java bcprov 国密 依赖 jar包 版本 升级 降级 教程_bcprov-jdk16_九二战歌的博客-CSDN博客

在线加解密工具

在线生成sm2公钥私钥:

SM2 密钥在线生成工具

在线加密链接:

DES在线解密 DES在线加密 des hex - The X 在线工具

参考文章

了解国密算法的分类(SM1-9和祖冲之密码的介绍):国密算法分类 - 知乎

国密算法与国际算法的对比:国密算法学习整理_海洋中的一滴的博客-CSDN博客

国密算法GMSSL介绍:初识国密算法_国密算法收费吗_云水木石的博客-CSDN博客

基于java的前后端实现国密:国密算法纯软件实现(java+javascript ) - 简书

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/593577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年五一杯数学建模A题血管机器人的订购与生物学习解题全过程及论文和程序

2022年五一杯数学建模A题 血管机器人的订购与生物学习 原题再现: 随着微机电系统的发展,人类已经可以加工越来越小的机器。这些机器小到一定程度就可以放进血管开展疾病治疗,这就是血管机器人。血管机器人可以携带药物放入血管里定点治疗与…

信号调制的工作原理

要理解如何进行无线数据传输,我们需要了解: 什么是频率? 信息/数据信号 时间表示 频率表示,为什么它很重要? 滤波器如何工作? FCC通信频段 调制和解调 这些主题可能您在大学专业课上学过&#xff0c…

uboot下的mw写内存和md显示内存命令以及nand命令

配置uboot参数 setenv ipaddr 192.168.0.10;setenv serverip 192.168.0.40;setenv gatewayip 192.168.0.1;setenv netmask 255.255.255.0 setenv bootargs mem512M consolettyAMA0,115200 root/dev/mtdblock2 rootfstypeyaffs2 rw init/init mtdpartshinand:1M(boot),4M(kern…

面试offer收割机,爆肝整理高频软件测试面试题(带答案)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

excel 给合并的单元格进行序号填充

一、问题描述 提示:这里描述项目中遇到的问题: 在使用excel 的时候,是否遇到过要给合并单元格排序的情况,下拉会显示需要相同的单元格才行,如图: 二、解决方案 目的是给单元格计数,所以使用…

Module not found: Error: Can‘t resolve ‘fs‘ in ‘/root/workspace/

项目发版时 因为webpack5 不会自动引入polyfills 导致报了一系列错, 按照提示做如下配置 externals 官网文档解释的很清楚,就是webpack可以不处理应用的某些依赖库,使用externals配置后,依旧可以在代码中通过CMD、AMD或者wi…

打车/代驾/跑腿小程序源码司机入住uniapp/thinkphp

开发代驾顺风车货运 客户端:Uniapp 开发 司机端:Uniapp 开发 后台:thinkphp5 框架 数据库:MySQL 打车/代驾/跑腿小程序源码司机入住uniapp/thinkphp 为什么用UNIAPP开发? UNIAPP框架简单,学习成本低…

Spring(IOC,DI,事务)属性

Spring(IOC,DI,事务)属性 IOC 概念 Inverse Of Controll:控制反转;反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为由工厂推送。(变主动为被动,即反转)解决了…

1_5 optical_flow

采用特征点法做VO存在耗时较大的问题,一般耗时情况:如下 (1) 在图像中提取特征点并计算特征描述, 非常耗时 ~10ms ORB,shift耗时更多; (2) 在不同图像中寻找特征匹配, 非常耗时 …

day43|动态规划5-不同0-1背包的问题形态

关键点: 找到前后两种状态的依赖关系 经典0-1背包: 给定一个背包,问装满该背包的最大价值。分割等和子集: 给定一个背包,能不能装满该背包(将重量抽象成价值)最后一块石头重量: 给一…

如何快速图片压缩指定大小?图片压缩到200k以内的方法

图片压缩到200k以内的介绍 在现代社交媒体和网页设计中,高质量的图片是必不可少的。但是,大型图像文件可能会导致页面加载时间过长,从而影响用户体验。这时就需要使用图片压缩技术来将图片文件大小减小到合理的范围内。其中,将图…

稳健地对时间序列光学卫星图像进行配准教程

一、引言 几何误差会导致连续卫星图像采集之间的错位,进而影响土地监测和变化检测分析。在这篇博客文章中,我们研究了如何稳健地对时间序列光学卫星图像进行配准,以减少这种错位的影响。 在本篇博客的末尾,给出用Python配准大区域…

【TES710D-EXT】基于复旦微的FMQL10S400全国产化ARM核心模块之扩展板

板卡概述 TES710D-EXT是专门针对我司TES710D(基于复旦微FMQL10S400的全国产化ARM核心板)的测试扩展板。 FMQL10S400是复旦微电子研制的全可编程融合芯片,在单芯片内集成了具有丰富特点的四核处理器(PS)和可编程逻辑&am…

B/S架构与C/S架构的区别

B/S与C/S区别: 1、c/s架构主要应用于局域网内,而b/s架构主要应用于广域网中; 2、c/s架构一般面向相对固定的用户群,对信息安全的控制能力很强,而b/s架构对安全的控制能力相对弱; 3、B/S架构维护升级比较简单…

考研算法复试刷题第20天:Dijkstra求最短路 【有向图的最短路径问题】

Dijkstra求最短路 我们先来说说这道算法的过程: 和上道题不同的是我们这次是求一个有向图到最终节点的最短距离,所以其策略也有所不同。我们先手动模拟一下过程吧假如有4个点,有他们之间有五条边,那么我们如何来求其1到4的最短路…

【Daily Share】觉得浏览器low?手写一个浏览器扩展程序,让自己的浏览器变得与众不同!!!!

浏览器扩展 概念 扩展为浏览器添加了特性与功能。它通过我们所熟悉的 Web 技术-HTML,CSS 还有 JavaScript 来创建。扩展可以利用与 JavaScript 相同的网页 API,但是扩展也可以访问它自己专有的 JavaScript API。这意味着,和在网页里编码相比…

音视频基础知识

视频基础知识 分辨率 分辨率又称为解析度,分辨率越高,像素越多,图像越清晰。 视频分辨率:又称为图像分辨率,由视频的宽高组成,表示形式宽x高,常见的视频分辨率有480P、720P、1080P、2K(2048x…

动态规划-书籍复印

动态规划-书籍复印 1 描述2 样例2.1 样例 1:2.2 样例 2: 3 解题方法3.1 算法解题思路3.2 算法代码实现 该题是lintcode上的算法题,该题的解题思路是依据九章侯老师提供的解题思路去处理的: https://www.lintcode.com/problem/437/description 1 描述 给…

ACL2023 | 黑盒大模型如何微调?清华Decoder Tuning方法提升大模型few-shot场景效果

一、概述 title:Decoder Tuning: Efficient Language Understanding as Decoding 论文地址:https://arxiv.org/abs/2212.08408 代码:GitHub - thunlp/DecT 二、Motivation 现在有很多模型只提供API,没法直接训练,…

关键字 package、import的使用

一、package 关键字的使用 为了更好的实现项目中类型的管理,提供了包的概念使用package声明类或接口所属的包,声明在源文件的首行包 术语标识符,遵循标识符的命名规则、规范(xxxyyyzzz)、“见名知意”每 “ . ”一次&…