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

  • 国密算法是商用密码,仅能用于商业用途。
  • 国密算法是一套标准,由国家密码局制定的规范,凡是符合的,都可以称之为国密算法。
  • 国密算法暂无官方的代码实现,企业可以自己编码实现,并申请国家密码局认证,通过后即被认可。
  • 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 ) - 简书

国密算法初探 | 入门教程 | 解析相关推荐

  1. 国密算法SM3与SM4简介与应用

    点击上方蓝字可直接关注!方便下次阅读.如果对你有帮助,麻烦点个在看或点个赞,感谢~ 最近0基础在学习国密算法的相关应用,故此和大家分享下自己的一些经历. 程序平台: Ubuntu16.04  x64 ...

  2. 加解密算法及国密算法介绍

    图片内容参看我的网站:www.waltersun.cn 引言 随着信息化的推进,信息安全越来越受到人们的重视.这篇文章简单介绍了常用的密码算法.原理.使用场景,简单比较国密算法,可作为业务使用的入门指 ...

  3. SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用

    网上有很多网友问算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下? 这里分享个自己用QT造的一个小工具,简单好用,同时 ...

  4. 金融安全算法介绍系列5——国密算法

    前言: 为了方便查看博客,特意申请了一个公众号,附上二维码,有兴趣的朋友可以关注,和我一起讨论学习,一起享受技术,一起成长. 1. 简介 国密即国家密码局认定的国产密码算法.主要有 SM1,SM2,S ...

  5. mysql国密算法_【国密SM2算法】通过公钥证书获取JAVA对象

    网上关于国密算法的资料较单一,大部分代码都是写的怎么通过java代码生成公私钥串. 实际项目中对方已经给了他们的公钥证书,这里记录如何通过代码解析获得Ecpoint对象并输出 关键代码 String ...

  6. 基于openssl和国密算法生成CA、服务器和客户端证书

    参考链接 国密自签名证书生成_三雷科技的博客-CSDN博客_国密证书生成 openssl采用sm2进行自签名的方法_dong_beijing的博客-CSDN博客_openssl sm 前提说明 Ope ...

  7. java 数字信封_使用加密狗的国密算法实现B/S架构数字信封

    一.程序逻辑 加密-上传 浏览器发起A用户的上传请求 服务端生成会话密钥Ks,用A用户的公钥Ka进行SM2加密为密钥Ks',发给浏览器 浏览器收到加密后的会话 密钥Ks',用A用户的私钥Ka'进行SM ...

  8. KonaJDK 助力微服务国密算法使用特性一览

    导读 本次 TencentKona 8 版本更新到 8.0.4, 在同步到社区版本 8u272 的基础上,还有哪些新的特性呢?本文为您一一介绍: Update to jdk8u272 TencentS ...

  9. 基于国密算法SM2SSL证书的https加密,如何实现?

    为什么80%的码农都做不了架构师?>>>    如果要在客户端/网关系统和服务端之间进行SSL加密通信,当客户端应用(浏览器等)发起登录认证.加密.签名等请求时,服务端如何实现基于国 ...

最新文章

  1. 直接导入用户信息到discuz ucenter.
  2. Linux下将文件打包、压缩并分割成指定大小
  3. 反素数(luogu 1463)
  4. Omi框架学习之旅 - 插件机制之omi-finger 及原理说明
  5. FLASH ERASE:CHIP、BLOCK、SECTOR
  6. python 结巴分词(jieba)学习
  7. 教授犀利致辞:躺平的韭菜不挨刀,但不挨刀的韭菜做不成佳肴
  8. 系统操作手册_东芝CT操作手册——系统概述
  9. c# mysql 连接
  10. vmw6.5安装Freebsd8.1桌面gnome
  11. RDD文件读取与保存
  12. SnagIt怎么使用 SnagIt使用教程
  13. linux下c语言队列,C语言队列的实现
  14. 用JavaScript制作一个贷款计算器(注:附带详细注释)
  15. IIC-LED-AW9120--1原理准备(基于麒麟座)
  16. 2022-2028全球与中国多通道光纤旋转接头(FORJ)市场现状及未来发展趋势
  17. vue子路由跳转回父级,刷新部分父页面接口,push跳转
  18. 介绍 Golang Timer(定时器)
  19. Ubuntu18.04安装Pycharm并将其添加至左侧收藏夹
  20. 安卓实现扫一扫识别数字

热门文章

  1. MATLAB 访问结构体
  2. hive sql 修改列名
  3. jupyter | 打开文件的方法
  4. MES11大标准模块(ISA95)
  5. 献给阿尔吉侬的花束(广搜)
  6. 模拟(Simulation)与仿真(Emulation)的区别
  7. response.sendError
  8. CVPR 2022 | 腾讯优图实验室30篇论文入选,含场景文本语义识别、3D人脸重建、目标检测、视频场景分割和视频插帧等领域...
  9. C++ 函数声明后面的const用法
  10. 数澜科技荣获2020铅笔道·真榜「中国最具投资价值创新企业TOP200」