【SM系列】简单说说SM2,SM3,SM4加密算法

news2024/9/28 5:27:27

希望文章能给到你启发和灵感~
如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~

阅读指南

  • 开篇说明
  • 一、基础环境说明
    • 1.1 硬件环境
    • 1.2 软件环境
  • 二、什么是SM2加密?
    • 2.1 应用场景
    • 2.2 与RSA算法的区别
  • 三、什么是SM3加密?
    • 3.1 应用场景
  • 四、什么是SM4加密?
    • 4.1 应用场景
  • 五、最后

开篇说明

之前我们说过了几种常见加密算法,今天我们再说说另一个SM系列的算法,SM系列都是中国国家密码管理局发布的算法,他们虽然同属一个系列,但是类别确实有很大的不同,例如SM2是非对称加密算法,SM4是对称加密算法,而SM3是分组消息摘要算法;

在这里插入图片描述

【AES】简单说说什么是AES加密
【MD5】关于MD5,你不得不知道的概念
【RSA】简单说说什么是RSA非对称加密

一、基础环境说明

考虑环境因素,大家适当的对比自己的软硬件环境情况分析~请仔细阅读硬件、软件环境

1.1 硬件环境

MacOS Monterey 版本 12.6.8 Apple M1

1.2 软件环境

开发工具:Idea 2024
编译环境:Java 1.8.0_171,

二、什么是SM2加密?

SM2是一种基于椭圆曲线密码学的非对称加密算法。同传统意义上的非对称加密算法一样,他也是有着一对公钥和秘钥的。公钥用于加密数据或验证数字签名,而私钥则用于解密数据或生成数字签名。

2.1 应用场景

  1. 安全通信:加密电子邮件、即时通讯等通信内容,保护通信的机密性和完整性。
  2. 数字签名:在电子合同、电子票据等场景中,生成和验证数字签名,确保文件的不可否认性和真实性。
  3. 身份认证:实现安全的身份认证机制,如在电子政务、金融服务等领域。

2.2 与RSA算法的区别

同样属于非对称加密算法, 那RSA和SM2该怎么选择呢,其实,相较于传统的公钥算法(如RSA),SM2在相同安全级别下所需的密钥长度更短计算效率更高且安全性更高

三、什么是SM3加密?

SM3是一种分组消息摘要算法,用于生成数据的哈希值(消息摘要),而非直接加密数据。

3.1 应用场景

  1. 数据完整性校验:验证数据在传输或存储过程中是否被篡改
  2. 数字签名:与SM2等算法结合使用,在数字签名过程中生成签名数据的哈希值。
  3. 网络安全:在网络通信中,用于验证消息的完整性和真实性。

例如我们比较常见的情况就是:在数据传输或存储过程中,可以使用SM3对原始数据进行哈希处理,并将哈希值与原始数据一同存储或传输,以便在后续阶段验证数据的完整性真实性,检验我们的数据是否发生篡改;

四、什么是SM4加密?

提示:SM4加密与SM2虽然都是SM系列,但是他们的机制却不同,因为他是对称加密算法,意味着他和AES一样不区分公钥和密钥,而是同一套密钥,但是密钥长度他是固定的128位,不像AES那样有多种密钥长度;

4.1 应用场景

  1. 数据加密:对敏感数据进行加密保护,防止数据泄露。
  2. 物联网安全:在物联网环境中,保护设备间通信数据的隐私安全。
  3. 金融支付:在金融支付领域,确保交易信息的安全传输和存储。

五、最后

算法加密方式密钥长度应用场景
SM2非对称加密128位(公钥/私钥)安全通信、数字签名、身份认证
SM3分组消息摘要不涉及密钥长度(生成哈希值)数据完整性校验、数字签名辅助、网络安全
SM4对称加密128位数据加密、物联网安全、金融支付

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

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

相关文章

AI修复老照片的完整教程来了!

大家好,我是每天分享AI应用的萤火君! 最近老照片修复的项目比较火爆,很多同学都拿到了成果,这个技术上已经没有太大的难度,结合各种工具可以做出不错的效果,但是很多人还不知道如何实现,这篇文…

最常用的100个Python库入门

文章目录 最常用的100个Python库入门命令行界面和参数解析日志和错误处理多媒体处理异步编程Web开发网络和API代码分析和测试数据处理和科学计算数据库和数据存储系统和文件操作安全性机器学习和深度学习其他工具和库任务调度进度条虚拟环境管理异步任务队列文档生成HTML处理SQ…

Web APIs第一天

第一天&#xff1a;DOM获取元素&#xff0c;获取元素&#xff0c;修改属性 声明新变量&#xff0c;一般默认const&#xff0c;如果变量的值不变&#xff0c;则使用const。如果变量的值变化&#xff0c;则使用let。var已经被淘汰了。 <script>const arr [red, pink]arr.…

ESP32!Thonny+MicroPython+ESP32开发环境搭建!!

准备工具&#xff1a; ThonnyMicroPythonESP32 一.Thonny安装 下载地址&#xff1a;Thonny, Python IDE for beginnershttps://thonny.org/ 二.下载esp32环境——根据型号下载 下载地址&#xff1a;MicroPython - Python for microcontrollershttps://micropython.org/dow…

登录页面设计课堂,用8个案例带你学习

本文将以 8个最受欢迎的登录页模板为例&#xff0c;给大家分析想要提升登录页转化率&#xff0c;设计登录页时应该关注的要点 作为设计师&#xff0c;在设计登录页面时&#xff0c;除了要让你的界面设计拥有出色的视觉效果&#xff0c;还要想尽可能地获取新用户&#xff0c;并留…

分享一个使用智狐联创AI平台创建的WordPress分类广告插件

为了提升广告的效果与管理效率&#xff0c;我们开发了一款基于WordPress的分类广告插件&#xff0c;旨在帮助用户根据文章分类方便地显示相关广告。这款插件不仅简化了广告的管理流程&#xff0c;还提高了广告的精准投放。 插件功能概述 1. 广告管理 用户可以通过插件后台轻…

谷歌seo优化有能一步提升的方法吗?

网站优化的方法有很多&#xff0c;但没有一刀切的解决方案。 谷歌SEO绝对不是一项廉价的服务。任何声称能以低价实现显著效果的承诺都值得怀疑。 谷歌SEO是一项需要人力、技术和资源的工作&#xff0c;如果你打算自己做 最少需要一个人的年薪&#xff0c;还要考虑域名、服务器…

Linux中的编译器gcc/g++

目录 一、gcc与g的区别 1.gcc编译器使用 2.g编译器使用 二、gcc/g编译器编译源文件过程 1.预处理 2.编译 3.汇编 4.链接 三、静态库和动态库 1.库中的头文件作用 2.静态库 3.动态库 四、gcc编译器的一些选项命令 一、gcc与g的区别 gcc用于编译C语言代码&#xff…

Echarts可视化大屏数据详解

1、ECharts介绍 1.1、什么是ECharts ECharts是一款由百度开发并开源的数据可视化图表库&#xff0c;旨在帮助开发者通过简单易用的方式实现复杂的数据展示和分析需求。它完全基于 JavaScript 开发&#xff0c;利用 HTML5 的 Canvas 技术进行图形渲染&#xff0c;这使得它能够…

精密五金零配件加工的核心技术解析

在现代制造业中&#xff0c;精密五金零配件起着至关重要的作用。从电子产品到机械设备&#xff0c;从汽车制造到航空航天&#xff0c;都离不开高精度的五金零配件。而要实现精密五金零配件的加工&#xff0c;需要掌握一系列核心技术。时利和与大家一同解析精密五金零配件加工的…

Flutter之修改App的图标、名称

一、修改App名称 Android 路径&#xff1a;android/app/src/main/AndroidManifest.xml, 找到 android:label”string/app_name”。点击Ctrl鼠标左键转到string.xml 修改名称&#xff1a; <resources><string name"app_name">你的APP名称</string>…

如何使 div 居中?CSS 居中终极指南

前言 长期以来&#xff0c;如何在父元素中居中对齐一个元素&#xff0c;一直是一个让人头疼的问题&#xff0c;随着 CSS 的发展&#xff0c;越来越多的工具可以用来解决这个难题&#xff0c;五花八门的招式一大堆&#xff0c;这篇博客&#xff0c;旨在帮助你理解不同的居中方法…

获取navicat已保存数据库连接的密码

打开connections.ncx&#xff0c;可以看到Passwordxxx,这是加密后的密码 解密 在线的运行工具https://tool.lu/coderunner 运行如下代码&#xff0c;代码中的密码改成你的密码&#xff0c;在倒数第二行位置 <?phpnamespace FatSmallTools;class NavicatPassword{protected…

基础数据结构之双向链表

目录 基础定义 节点的定义 节点的初始化 创建双链表 1.前插法 2.尾插法 双向链表的遍历输出 指定位置插入 双向链表的按位取值 任意位置删除 双向链表销毁 主程序入口​​​​​​​ 基础定义 所谓的双向链表就是单向链表多了一个前驱指针。双向链表是由一个个结点组成每个结点…

【LLM】大模型基础--大规模预训练语言模型的开源教程笔记

1.引言 本文以DataWhale大模型开源教程为学习路线&#xff0c;进行一整个大模型的入门操作 什么是语言模型 语言模型是一种对词元序列&#xff08;token&#xff09;的概率分布&#xff0c;可以用于评估文本序列的合理性并生成新的文本。 从生成文本的方式来看&#xff0c;…

【C++ Primer Plus习题】10.4

问题: 解答: main.cpp #include <iostream> #include "sales.h" using namespace std; using namespace SALES;int main() {Sales s1;double de[QUARTERS] { 12.1,32.1,42.1,51.1 };Sales s2(de, QUARTERS);s1.showSales();s2.showSales();return 0; }sales.…

IP/TCP/UDP协议的关键知识点

导语&#xff1a;网络协议是理解网络情况的基础&#xff0c;当遇到网络问题时&#xff0c;首先可以从网络协议入手&#xff0c;熟悉的网络协议可以有效帮助小伙伴们排查或者说定位大概的问题方面。本文整理了目前最常用的网络通信协议&#xff0c;相信对小伙伴们肯定都有帮助。…

C#使用MQTT(一):MQTT服务端

MQTT&#xff08;Message Queuing Telemetry Transport&#xff09; 即时通讯协议&#xff0c; 开发商 IBM MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上&#xff0c;是为硬件性能低下的远程设备以及网络状…

将RK3588平台的TMC等USB function驱动挪出内核源码树

背景 前一段时间定位一个上位机通过USB-TMC连接下位机&#xff08;基于RK3588平台&#xff09;时界面发生卡顿的问题&#xff0c;发现USB-TMC驱动代码是放在内核源码树里跟内核一起编译的&#xff0c;觉着这样既不便于更换TMC 驱动版本&#xff08;每次修改代码都要重编内核&a…

2024年【广西安全员C证】考试题及广西安全员C证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广西安全员C证考试题是安全生产模拟考试一点通生成的&#xff0c;广西安全员C证证模拟考试题库是根据广西安全员C证最新版教材汇编出广西安全员C证仿真模拟考试。2024年【广西安全员C证】考试题及广西安全员C证考试技…