常见的国密加密算法(M1/M2/M3/M4)

article/2025/8/28 3:03:16

国密加密算法

SM2(非对称加密算法)

  • 类型:是非对称加密算法,基于椭圆曲线密码实现。
  • 特点:包括有数字签名算法密钥交换协议公钥加密算法等部分,其中256位的安全强度比RSA 2048位高,但运算速度更快。
  • 使用场景:使用在数字签名,密钥交换,公钥加密等场景,在电子商务、电子政务领域应用广泛,电子合同签署过程中的数字签名。可以确保合同签署方的身份真实,还能保证合同未被篡改修改

SM2的签名验签(私钥用作签名;公钥用于验签)

  • 应用场景
    • SM2用于数字签名和验签,签名使用私钥对数据进行加密,验签使用公钥对签名进行解密并且验证数据的完整性和真实性,
  • 具体实现:
    • SM2算法的数字签名过程包括生成签名验证签名两个步骤。生成签名时,首先对消息进行哈希处理,然后使用私钥对哈希值进行签名,生成一对签名值。验证签名时,使用对应的公钥和消息的哈希值对签名进行验证

SM2的加密解密(私钥用户解密;公钥用于加密)

应用场景

金融支付网银加密、移动支付签名SM2 + SM4 + SM3
电子政务公文加密传输、身份认证SM2 证书 + SM4-CBC
物联网设备安全配网、固件签名SM2 轻量化实现 + SM4-ECB
区块链数字资产交易签名SM2 + Keccak 哈希
医疗健康患者数据加密、电子处方签名SM2 + SM4-CBC

SM3(哈希算法)

  • 类型哈希算法(生成数据的唯一“指纹”)
  • 特点:
    • 主要保证消息的完整性
    • 不需要密钥
    • 无法知道是谁发的数据
  • 作用
    • 你给他任意一端数据(文字、消息、密码),它就会计算出一个唯一的、固定长度的"指纹"(256位的哈希值)
  • 使用场景:
    • 主要使用在验证数据的完整性数字签名消息摘要的生成,在网络通讯中保证消息没有被修改。
    • 数字证书(M2数字证书)
    • 安全通信协议(TSL/SSL)
    • 区块链或者数字货币
    • 软件/固件的完整性校验

SM3-HMAC(消息认证–加了“密码”)

  • 本质
    • 消息认证码(生成带密钥的防伪标签)
  • **特点:**消息认证码(生成带密钥的防伪标签)
    • 输入必须要有数据+密钥
    • 主要保证数据完整性和数据真实性(带密码的指纹)
  • 作用:
    • 在SM3的基础上加了一个密钥,你给它一段数据+只有你知道和接收方知道的密钥,会计算出一个带密钥的"认证标签"(MAC)
    • 不仅经可以检查文件本身是否被修改了,还可以检查这个文件确实是那个知道密钥的人给你的

两者的对比

特点SM3SM3-HMAC
本质哈希函数 (生成数据指纹)消息认证码 (生成带密钥的防伪标签)
核心输入数据数据 + 密钥
密钥不需要必须要有
主要保证数据完整性 (数据没被篡改)数据完整性 + 数据真实性 (谁发的?)
类比指纹扫描仪 (只看指纹是谁的)带密码的印章 (盖了章就知道是谁盖的)

SM4(对称加密算法)

  • 类型:对称加密算法
  • 特点:分组密码算法,分组长度和密钥长度均为128位,采用32轮非线性迭代结构,解密过程只需要将加密密钥反序使用就可以。算法结构简洁高效。
  • 使用场景:用来替代DES/AES等国际密码算法,在移动通讯、物联网等领域广泛应用,如对无线局域网中的数据进行加密解密。

3.1 SM4-ECB(电子密码本模式)

  • 工作原理:
    • 将明文分割为128位分组,每个分组独立使用SM4加密,没有反馈
    • 若明文长度不足128位,需要填充(如PKCS#7)
  • 特点:
    • 容易实现,但是存在安全缺陷,相同的明文分组加密时结果是相同的,暴露数据模式
  • 适用场景:
    • 仅仅适用于加密单分组数据(如密钥加密),不推荐使用长数据

3.2 SM4-CBC(密码分组链接模式)

  • 工作原理:
    • 每个明文分组在加密之前与前一个密文分组异或(首个分组与初始化向量IV异或**)**
    • 加密之后的结果作为下一组分****组的IV
  • 特点:
    • 与SM4-ECB不同,是隐藏明文模式,相同的明文分组加密的结果是不同的
    • 需要确保IV的随机性和唯一性
  • 注意:
    • IV必须由随机数生成
    • 必须填充到完整的分组

3.3 SM4-MAC(分为SM4-CBC-MAC和SM4-CMAC)

消息认证码(MAC)用于验证数据完整性和真实性

3.3.1 .SM4-CBC-MAC(取最后一个密文作为MAC的值
  • 工作原理:
    • 使用CBC模式加密整个消息,取最后一个密文分组作为MAC的值
    • 密钥与加密密钥可以相同也可以不同
  • 步骤
      1. 使用SM4-CBC加密消息,IV通常全部设置为0
      1. 最后密文的最后一个分组进行截断,让MAC使用。
  • 缺点
    • 适用于固定长度的消息
3.3.2. SM4-CMAC
  • 工作原理:
    • 改进CBC-MAC的安全性,通过使用两个子密钥(K1, K2)处理末尾分组
  • 特点
    • 安全性较高,支持任意长度消息,自动补位,末尾块与k1k2异或防篡改,
    • 建议使用独立密钥
SM4-CBC-MAC和SM4-CMAC对比
对比项SM4-CBC-MACSM4-CAMC
工作原理直接使用CBC模式加密,取最后的分组作为MAC改进CBC算法,基于MAC模式但是安全性能高
加密结构直接使用CBC加密使用两个子密钥对末尾进行加密
消息长度只支持固定的长度,否则需要填充支持任意长度消息
末尾填充方式自动补位,末尾块与K1/K2异或防篡改需要手动填充,但填充可能会被利用
密钥要求可以和加密密钥相同,但是存在风险建议使用独立的密钥
标准化依赖CBC模式,无独立标准符合国际标准
使用场景仅限固定长度数据任意长度

国密算法总结


http://www.hkcw.cn/article/OFLAjsSOMd.shtml

相关文章

Ubuntu系统下Docker部署Dify保姆级教程:实现内网穿透远程访问

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 各位开发者朋友,今天我们将开启一项创新实践——基于Ubuntu系统搭建Dify大语言模型开发平台,并通过Docker容器…

MySQL高可用革命:Orchestrator实现零干预的故障转移与智能拓扑管理

MySQL高可用革命:Orchestrator实现零干预的故障转移与智能拓扑管理 凌晨3点,某电商平台的数据库主节点突然宕机,而系统却在30秒内自动切换至备用节点,数百万用户的购物车数据完好无损——这一切的背后,正是Orchestrato…

Github 2025-05-29 Go开源项目日报Top9

根据Github Trendings的统计,今日(2025-05-29统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目9Assembly项目1Ollama: 本地大型语言模型设置与运行 创建周期:248 天开发语言:Go协议类型:MIT LicenseStar数量:42421 个Fork数量:27…

技能造血破冰中年人就业困局:粤荣职业培训学校与康安堂共筑康养人才直通车

2025年5月28日,广州市白云区粤荣职业培训学校与康安堂(广州)健康产业有限责任公司在广州市白云区正式签署就业合作协议。在当前社会,中年人就业难问题日益凸显。他们面临着家庭和社会的双重压力,却因年龄、技能等因素在就业市场上处于劣势。粤…

notion搭建个人知识管理库

nullhttps://www.bilibili.com/video/BV1Ur4y1L77m/?spm_id_from333.337.search-card.all.click&vd_source5434ba52b45e69a8650762bf71d67608 一、视频教程:如何搭建个人管理数据库,包括目标管理、知识管理、任务管理等功能,以及如何创建表格和设置…

EC800X QuecDuino开发板介绍

支持的模组列表 EG800KEC800MEC800GEC800E 功能列表 基本概述 EC800X QuecDuino EVB 搭载移远 EC800 系列模组。支持模组型号为: EC800M 系列、EC800K 系列、EG800K 系列、EC800E 系列等。 渲染图 开发板的主要组件、接口布局见下图 资料下载 EC800X-QuecDui…

CC攻击的种类与特点解析

CC攻击(Challenge Collapsar)是一种针对Web应用层的分布式拒绝服务(DDoS)攻击,通过模拟合法用户请求耗尽服务器资源,导致服务不可用。以下是其核心种类及特点的详细分析: 一、CC攻击的种类 代理…

Vite打包优化实践:从分包到性能提升

前言: ​​​​​​​ 随着前端应用功能的增加,项目的打包体积也会不断膨胀,影响加载速度和用户体验。本文介绍了几种常见的打包优化策略,通过Vite和相关插件,帮助减少项目体积、提升性能,优化加载速度。 rollup-plugi…

深度解析 9 大 UI 设计风格

1. 扁平化设计 (Flat Design) 特点: 简洁明了: 移除了阴影、渐变、纹理等三维效果,强调二维平面元素。色彩鲜明: 常用大胆、明亮的色彩。极简主义: 专注于功能性,减少不必要的装饰。排版清晰: 强调大字体和清晰的文本。易于响应: 扁平化设计在不同屏幕尺…

信号与系统速成-1.绪论

b站浙大教授虽然讲的比较细,但是太慢了,不适合速成 祖师爷奥本海姆的MIT课程好像和我们教材的版本不太匹配,但是讲的很不错 慕课上也有很多资源,比如信号与系统 - 网易云课堂 同站博主篱笆外的xixi的文章也挺不错 最终我还是选…

WPF prism

Prism Prism.Dryloc 包 安装 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空间, 继承由 Application → PrismApplication&#xff0c;删除默认启动 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…

Shell 脚本

注&#xff1a;文章参考《鸟哥的linux私房菜》、通义千问AI产品 认识 Shell Linux 中的 Shell 就是 linux 内核的一个外层保护工具&#xff0c;并负责完成用户与内核之间的交互。 Shell 可以分为以下几类&#xff1a; Bourne Shell &#xff08;简称 sh&#xff09;C Shell…

Win11安装Dify

1、打开Virtual Machine Platform功能 电脑系统为&#xff1a;Windows 11 家庭中文版24H2版本。 打开控制面板&#xff0c;点击“程序”&#xff0c;点击“启用或关闭Windows功能”。 下图标记的“Virtual Machine Platform”、“适用于 Linux 的 Windows 子系统”、“Windows…

自动化立体仓库堆垛机SRM控制系统FC19手动控制功能块开发

1、控制系统手动控制模块HMI屏幕设计如下图 屏幕分为几个区域:状态显示区、控制输入区、导航指示区、报警信息区。状态显示区需要实时反馈堆垛机的位置、速度、载货状态等关键参数。控制输入区要有方向控制按钮,比如前后左右移动,升降控制,可能还需要速度调节的滑块或选择按…

软件无线电技术之基带QPSK 调制技术+扩频技术

基带QPSK 调制技术 数字正交调制以0、1 比特流为调制信号&#xff0c;其过程就是将原始数据按照一定的规则映射至IQ 坐标系&#xff0c;而后经过DAC 转为模拟信号后才能进行后续的IQ 调制。 数字IQ 调制完成了符号到矢量坐标系的映射&#xff0c;映射点一般称为星…

图像数据与显存

一、 图像数据的介绍 1.1 灰度图像 从这里开始我们进入到了图像数据相关的部分&#xff0c;也是默认你有之前复试班计算机视觉相关的知识&#xff0c;但是一些基础的概念我仍然会提。 昨天我们介绍了minist这个经典的手写数据集&#xff0c;作为图像数据&#xff0c;相较于结…

opencut:如何用AI工具把中文图片/视频翻译成英语、日语、俄语等100多种语言!

在全球化背景下&#xff0c;无论是学习、工作还是生活&#xff0c;多语言翻译需求日益增长。从跨境电商产品图的本地化适配&#xff0c;到学习资料的快速翻译&#xff0c;传统人工翻译不仅成本高、耗时长&#xff0c;还可能因文化差异导致误解。 今天为大家分享一款高效实用的 …

揭开帕金森的神秘面纱

帕金森是一种常见的神经退行性疾病&#xff0c;多在中老年群体中出现&#xff0c;平均发病年龄约 60 岁。它主要是由于脑内特定区域产生多巴胺的神经细胞退化&#xff0c;导致多巴胺分泌减少&#xff0c;从而影响了人体的运动和其他生理功能。 这种疾病最典型的表现是运动症状&…

SAP ByDesign,项目管理为核心的中小企业数字化转型之二

1.商机管理 – 把整个销售过程控制在公司手里 2.高效的销售跟进 – 方便地创建销售报价&#xff0c;销售订单和项目来有效跟进商机 – 灵活地定义服务:服务可以是固定价格的&#xff0c;也可以是按时间和物料来计算的;可以按项目的方式或者以管理服务的 方式 – 结合物料和费用…

利用Python直接生成html注意事项

最近在结合大模型直接生成代码&#xff0c;总是出现一些看起来没问题但就是运行不通的情况如下。 明明代码正常&#xff0c;但是报错 后来查询发现&#xff0c;在Python使用f-strnig直接写入时&#xff0c;在一个字符串内的单个{}为占位符&#xff0c;需要转义&#xff0c;也…