[密码学实战]Java实现国密(SM2)密钥协商详解:原理、代码与实践
一、代码运行结果

二、国密算法与密钥协商背景
2.1 什么是国密算法?
国密算法是由中国国家密码管理局制定的商用密码标准,包括:
- SM2:椭圆曲线公钥密码算法(非对称加密/签名/密钥协商)
- SM3:密码杂凑算法(哈希)
- SM4:分组密码算法(对称加密)
2.2 密钥协商的意义
在安全通信中,双方需要在不安全的信道上协商出相同的会话密钥,用于后续对称加密。SM2密钥协商协议解决了以下问题:
- 避免预先共享密钥
- 抵抗中间人攻击
- 支持双向身份认证
三、SM2密钥协商原理详解
3.1 核心流程(基于ECMQV协议)
| 步骤 | 角色A(发起方) | 角色B(响应方) |
|---|---|---|
| 1 | 生成临时密钥对 (rA, RA) | 生成临时密钥对 (rB, RB) |
| 2 | 发送RA给B | 发送RB给A |
| 3 | 使用双方公钥和临时公钥计算共享密钥 | 使用双方公钥和临时公钥计算共享密钥 |
3.2 关键公式
共享密钥 = KDF( x_U \cdot (d_A + r_A \cdot s_A) \cdot (P_B + [s_B] \cdot R_B) )
x_U:椭圆曲线点坐标的x分量d_A:A方私钥r_A:A方临时私钥s_A/s_B:静态公钥派生参数
四、Java实现环境准备
4.1 依赖配置
<!-- Bouncy Castle国密支持 -->
<dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.65</version>
</dependency>
4.2 初始化安全提供者
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.security.Security;public class SM2KeyExchange {static {Security.addProvider(new BouncyCastleProvider()); // 添加BC提供者}
}
五、Java核心代码实现(含详细注释)
5.1 密钥对生成工具类
/*** 生成SM2静态密钥对*/public static KeyPair generateStaticKeyPair() throws 相关文章:
[密码学实战]Java实现国密(SM2)密钥协商详解:原理、代码与实践
一、代码运行结果 二、国密算法与密钥协商背景 2.1 什么是国密算法? 国密算法是由中国国家密码管理局制定的商用密码标准,包括: SM2:椭圆曲线公钥密码算法(非对称加密/签名/密钥协商)SM3:密码杂凑算法(哈希)SM4:分组密码算法(对称加密)2.2 密钥协商的意义 在安全…...
015--基于STM32F103ZET6的智能风扇设计
1.实物视频演示 智能风扇演示视频 2.程序代码讲解 STM32F103ZET6智能风扇_哔哩哔哩_bilibili 3源代码获取 https://download.csdn.net/download/weixin_41011452/90440545...
基于YOLO11深度学习的遥感视角农田检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
RBF神经网络+NSGAII多目标优化算法,工艺参数优化、工程设计优化(Matlab)
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.RBF神经网络NSGAII多目标优化算法(Matlab完整源码和数据) 多目标优化是指在优化问题中同时考虑多个目标的优化过程。在多目标优化中,通常存在多个冲突的目标,即改善一…...
Zookeeper(79)如何进行Zookeeper的监控?
对 Zookeeper 进行监控是确保其高可用性和性能的关键步骤。监控 Zookeeper 通常包括以下几个方面: 健康检查:检查 Zookeeper 节点是否在线。性能指标:监控关键性能指标,如请求延迟、事务处理量等。日志监控:监控 Zook…...
运动想象 (MI) 分类学习系列 (17) : CCSM-FT
运动想象分类学习系列:用于运动图像 EEG 信号解码的跨通道特定互特征迁移学习 0. 引言1. 主要贡献2. 方法2.1 跨通道特定互特征迁移学习 (CCSM-FT) 网络2.2 功能转移:2.3 特征转移2.4 参数选择3. 结果4. 分析4.1 训练技巧分析4.2 特征转移分析5. 总结欢迎来稿论文地址:http…...
start DL from stratch (2)!!!
start DL from stratch (2)!!! 一、CPU and GPUcpuGPU安培架构爱达洛夫莱斯架构 二、使用conda创建一个新的虚拟环境三、autodl操作先知Linux复习目录文件和数据上传对于整个镜像的操作守护进程Tips 四、autodl租用创建实例<big>没有所需要的版本的…...
【深入浅出:Core-JS Legacy 的降级兼容指南】
深入浅出:Core-JS Legacy 的降级兼容指南 🛠️ 🌍 背景与核心概念 为什么需要 Polyfill? 随着 ECMAScript 标准的快速迭代(ES6/ES2015),现代浏览器对新特性的支持存在碎片化问题。旧版浏览器&am…...
通义灵码插件安装入门教学 - IDEA(安装篇)
在开发过程中,使用合适的工具和插件可以极大地提高我们的工作效率。今天,我们将详细介绍如何在 IntelliJ IDEA 中安装并配置通义灵码插件,这是一款旨在提升开发者效率的实用工具。无论你是新手还是有经验的开发者,本文都将为你提供…...
STM32之时钟树
左边是时钟产生电路,右边是时钟分配电路。中间的SYSCLK就是系统时钟72MHz,在产生电路有四个时钟源,分别是内部8MHz高速RC振荡器,外部的4-16MHz高速石英晶体振荡器,这个一般接8MHz,第三个是外部的32.768kHz低速晶振&…...
Unity插件-Mirror使用方法(一)Mirror介绍
目录 一、使用介绍 二、插件介绍 1、简述 2、核心功能与特点 基于组件的高层抽象 服务器-客户端架构 序列化与同步 可扩展性与灵活性 跨平台支持 社区与生态 3、典型应用场景 4、基本使用示例 安装 设置 NetworkManager 同步变量与 RPC 5、优缺点对比 6、为什…...
HVAC 设计:使用 Ansys Discovery 探索更好的设计
通过 Ansys Discovery 及其 2025 年新功能利用 CFD,通过 Computational Insights 应对 HVAC 行业的挑战。 挑战 HVAC 行业在设计高效可靠的管道系统方面面临多项挑战: 压力损失:设计不当的管道会增加能耗并降低热性能。复杂的几何形状&…...
ChatGPT 提示词框架
作为一个资深安卓开发工程师,我们在日常开发中经常会用到 ChatGPT 来提升开发效率,比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力,我们需要掌握一些提示词(Prompt)的编写技巧,并…...
004-利用Docker安装Mysql
利用Docker安装Mysql 一、在镜像仓库找到 Mysql1.镜像仓库地址2.复制命令3.下载Mysql镜像4.查看镜像 二、创建实例并启动三、用本地工具连接数据库四、设置 Mysql 配置 一、在镜像仓库找到 Mysql 1.镜像仓库地址 https://hub.docker.com 2.复制命令 docker pull mysql:8.0…...
Dify使用和入门
第一步:了解 Dify 在开始之前,先简单了解一下 Dify 是什么: Dify 是一个开源的 LLM 应用开发平台,专注于帮助开发者快速构建生产级的生成式 AI 应用。它支持知识库集成、RAG(检索增强生成)技术、复杂工作…...
高效管理 React 状态和交互:我的自定义 Hooks 实践
高效管理 React 状态和交互:自定义 Hooks 实践 在 React 中,Hooks 是一种使我们能够在函数组件中使用状态和副作用的强大工具。随着项目的增大,重复的逻辑可能会出现在多个组件中,这时使用自定义 Hooks 就非常合适。它们帮助我们…...
ESP 32控制无刷电机2
import machine import time import socket import network from machine import I2C, Pin, ADC def start_ap(): """ 启动ESP32的AP模式 """ ap network.WLAN(network.AP_IF) ap.active(True) ssid ESP32_APTest …...
揭开人工智能中 Tokens 的神秘面纱
揭开人工智能中 Tokens 的神秘面纱 在人工智能,尤其是自然语言处理(NLP)领域,"tokens" 是一个频繁出现且至关重要的概念。对于理解语言模型如何处理和理解人类语言,tokens 起着基础性的作用。那么ÿ…...
萌新学 Python 之 random 函数
random 模块:主要用来生成随机数 先导入包:import random randint(a, b),生成 [a, b] 之间的整数,包含边界 a 和 b,a 和 b 为整数 random(),生成的是 [0,1) 之间的浮点数,包含 0 不包含 1 r…...
2-2linux系统IO
文章目录 linux系统文件io1 open /close1.1 open1.2 close1.3 示例1.3.1 打开已经存在的文件 2 read/write2.1 read2.2 write使用 遗留问题:新创建的文件权限很奇怪3 lseek3.1 文件指针的移动3.2 文件拓展 perror函数 linux系统文件io 系统函数是系统专有的函数&am…...
基于51单片机的智能饮水机控制系统(有完整资料)
资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:T0012305C设计简介:本设计是基于51单片机的智能饮水机控制系统,主要实现以下功能:1.可通过显示屏显示当前水温和温度阈值…...
为什么你的C# 13主构造函数无法单步执行?微软Roslyn团队2024Q2调试协议变更详解(首批实测报告)
第一章:为什么你的C# 13主构造函数无法单步执行?C# 13 引入的主构造函数(Primary Constructor)语法简洁优雅,但调试时却常出现断点失效、F10/F11 无法单步进入等问题。根本原因在于:**主构造函数不生成独立…...
Cuvil × PyTorch推理部署:从模型量化到GPU内核融合,90%开发者忽略的4个关键编译开关
第一章:Cuvil PyTorch推理部署全景概览Cuvil 是一个面向边缘与云协同场景的轻量级模型推理编译与运行时框架,专为优化 PyTorch 模型在异构硬件(如 ARM CPU、NPU、GPU)上的低延迟、高吞吐部署而设计。它通过前端模型解析、中间表示…...
原神抽卡数据管理工具:从零开始的抽卡记录全掌控指南
原神抽卡数据管理工具:从零开始的抽卡记录全掌控指南 【免费下载链接】genshin-wish-export Easily export the Genshin Impact wish record. 项目地址: https://gitcode.com/GitHub_Trending/ge/genshin-wish-export 抽卡记录丢失怎么办?五星出货…...
Debian/Ubuntu 无头模式配置 Chrome 与 Selenium 自动化测试全攻略
1. 为什么需要无头模式下的Chrome自动化测试 在服务器端自动化测试的场景中,无头模式(Headless Mode)已经成为标配。想象一下,你正在搭建一个持续集成(CI)环境,需要在每次代码提交后自动运行测试…...
3步实现智能自动化操作:面向安卓用户的图像识别工具
3步实现智能自动化操作:面向安卓用户的图像识别工具 【免费下载链接】Smart-AutoClicker An open-source auto clicker on images for Android 项目地址: https://gitcode.com/gh_mirrors/smar/Smart-AutoClicker 在数字化生活中,重复操作消耗着我…...
OpenWrt搭建Samba共享服务的实用指南
1. 为什么要在OpenWrt上搭建Samba共享 家里有台老路由器刷了OpenWrt系统,闲置着总觉得浪费。后来发现用它搭建个局域网文件共享特别方便,手机电脑都能直接访问,传文件再也不用数据线来回倒腾。Samba这个协议在Windows、Mac和Linux上都能用&am…...
如何真正掌控聊天数据?开源工具WeChatMsg的隐私保护与数据备份方案
如何真正掌控聊天数据?开源工具WeChatMsg的隐私保护与数据备份方案 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trend…...
FreeRTOS信号量卡死?STM32CubeMX这个坑我帮你踩过了
FreeRTOS信号量卡死问题深度解析与STM32CubeMX最佳实践 1. 问题现象与初步排查 在嵌入式开发中,FreeRTOS与STM32CubeMX的组合堪称黄金搭档,但这对组合也暗藏玄机。最近遇到一个诡异现象:首次下载程序后系统无响应,二次下载却能正…...
Campus-iMaoTai自动化预约系统:技术架构与实践指南
Campus-iMaoTai自动化预约系统:技术架构与实践指南 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://git…...
