密码学(终极版)
加密 & 解密
备注:密码学领域不存在完全不能破解的密码,但是如果一个密码需要很久很久,例如一万年才能破解,就认为这个密码是安全的了。
对称加密
非对称加密
公钥加密、私钥解密
私钥签名、公钥认证
非对称的底层原理是密码学,密码学的底层是数学。
非对称加密的数学底层原理是:两个大质数相乘很容易得到一个结果,但是相反,将这个结果反推到是哪两个质数相乘却非常困难。
秘钥长度可以理解为两个质数相乘结果的大小,秘钥越长则使用的两个质数的相乘结果越大。

签名 & 验签
私钥签名,公钥认证。
公钥验证数字签名的过程如下:
- 获取要验证的数据、公钥和数字签名。
- 使用公钥对数字签名进行解密,得到解密后的哈希。
- 对要验证的数据进行哈希计算,通常使用与创建数字签名时相同的哈希算法。
- 将哈希计算得到的结果与解密后的哈希进行比较。
- 如果两者完全一致,则表明数字签名有效,验证通过;否则,数字签名无效,验证失败。
再通俗一点:公钥验证通常是 1. 通过使用公钥对数字签名解密后,得到hash值;2. 对data数据进行hash。3. 比较两个hash值是否一样来实现的。
参考链接SSH 原理与应用
哈希
哈希使用场景1:
对一个很大的文件进行签名很浪费计算机性能,因此一般情况下会先对待签名的文件进行哈希。(通过哈希来提取这个文件的特征-生成固定长度的字符串,也可以理解成这个文件的身份证,即唯一标识)。然后在对哈希值进行签名。
哈希使用场景2:
并不是所有的加密都使用非对称加密,对于很大的文件很浪费计算机性能。通常情况是利用对称加密和非对称加密结合的方式。即通过对称加密算法对大文件进行加密,然后通过非对称加密算法对对称加密的秘钥进行加密。
数字证书
上面的非对称加密已经是非常安全的了,包括验签都是没有问题的。但是还要一个没有解决的问题就是 “中间人” 攻击。
举例:Bob 想要把一个带数字签名的文件传递给 Alice 。于是 Bob 生成了公钥和私钥,用私钥签署了文件。然后把公钥上传到一个公共服务器上。如果一切顺利,那 Alice 去下载这个公钥,然后就可以验证签名,确认文件的确是 Bob 发出的,同时没有被篡改过。但是这里的安全漏洞是明显的,那就是 Alice 无法确认她下载的公钥是不是真的是 Bob 的。这就给所谓的“中间人攻击”提供了可能。假设在 Bob 的文件还没有到达 Alice 之前,黑客发起了中间人攻击,删除 Bob 的文件,然后签署一个假文件发送给 Alice ,Alice 收到后去公共服务上下载的公钥其实也被黑客替换过的,她用这个公钥去验证了签名,自认为文件就是 Bob 发出的,所以被骗了。其实仔细想想,问题就出在公钥本身没有办法证明自己的主人是谁。
所以要避免中间人攻击,就要使用数字证书。Bob 签名文件之后,给 Alice 发送时附上自己的证书。Alice 收到证书之后,就可以信任证书中的公钥的确就是 Bob 的了。有了这个公钥,可以验证文件附带的数字签名是 Bob 的。数字签名没问题,就保证了文件是没有被篡改过的。至于 Alice 如何确认证书本身是可信的,稍后我们聊 HTTPS 的过程中再展开聊。
数字证书是数字签名的升级,数字证书能证明公钥属于谁。
数字证书中的数字签名是CA的签名。
那么怎么确定CA是没问题的呢?计算机或者操作系统等在出厂的时候默认了权威的根证书的公钥,然后就可以来验证传过来的证书的真伪。

数字证书场景的两个应用场景
1、数字签名
如上。
2、HTTPS
比如,我现在用浏览器来访问谷歌服务器。要建立加密通道,首先第一步是要传递公钥过来,但是服务器传递过来的公钥如果过程中被篡改过,那么后续的加密通信也就全无安全性可言了。所以谷歌需要先去 CA 机构申请 SSL 证书,放到自己的服务器上。这样,我在浏览器中输入谷歌的网址,谷歌那边会首先给浏览器发送 SSL 证书。注意,各个浏览器中都内置了对全球各大 CA 机构的验证机制,底层的原理就是拥有 CA 们的公钥,可以验证证书上 CA 的签名。如果证书没有问题,浏览器就可以断定证书中携带过来的公钥就是谷歌的。这时候,浏览器会生成一个秘钥,注意这里就是对称加密的思路了,发送给谷歌服务器。这样,谷歌拥有浏览器的加密秘钥,可以用对称加密的思路来跟浏览器通信了,这样一个双向的加密通信通道也就开通了。对称加密的加密效率要比非对称高,所以大量数据的传递首选对称加密。
参考链接:数字证书SSL
参考链接:HTTPS
相关文章:
密码学(终极版)
加密 & 解密 备注:密码学领域不存在完全不能破解的密码,但是如果一个密码需要很久很久,例如一万年才能破解,就认为这个密码是安全的了。 对称加密 非对称加密 公钥加密、私钥解密 私钥签名、公钥认证 非对称的底层原理是…...
经销商管理系统选型解析:8款产品详评
本文主要介绍了以下8款经销商管理系统:1.纷享销客; 2.用友T6经销商管理系统; 3.金蝶经销商管理系统; 4.鼎捷经销商管理系统; 5.浪潮经销商管理系统; 6.销售易; 7.SAP Business One Distributor …...
Go 语言封装 HTTP 请求的 Curl 工具包
文章目录 Go 语言封装 HTTP 请求的 Curl 工具包🏗️ 工具包结构简介核心结构体定义初始化函数 🌟 功能实现1. 设置请求头2. 构建请求3. 发送请求4. 发送 GET 请求5. 发送 POST 请求6. 发送 PUT 请求7. 发送 DELETE 请求8. 读取响应体 💡 实现…...
【C++】函数重载与nullptr
1、函数重载 C支持在同一个作用域中出现同名函数,但是要求这些同名函数的形参不同,可以是形参个数不同或者类型不同。这样C函数调用就表现出了多态行为,使用更灵活。C语言是不支持同一作用域中出现同名函数的。 代码: 形参类型不…...
全球首款 5G-A 人形机器人发布
全球首款 5G-A 人形机器人于世界移动通信大会(MWC2025)上由中国移动、华为、乐聚联合发布。以下是关于这款机器人的详细介绍: 名称与背景 名称9:这款人形机器人名为 “夸父”,是中国移动、华为与乐聚机器人在 GTI 平台…...
第5节:交换技术与VLAN技术
交换机工作原理与VLAN技术实战 在现代网络中,交换机是构建局域网(LAN)的核心设备,而VLAN(虚拟局域网)技术则是优化网络管理和性能的关键工具。本文将以华为三层交换机为例,深入探讨交换机的工作原理、VLAN的配置与Trunk技术,以及STP(生成树协议)的应用,帮助读者全面…...
程序化广告行业(2/89):从程序化广告深挖数据处理技巧
程序化广告行业(2/89):从程序化广告深挖数据处理技巧 大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一…...
【10】单片机时间和速度的起源:指令周期与晶振频率
【10】单片机时间和速度的起源:指令周期与晶振频率 🌟 核心概念 单片机的运算速度与时间控制,本质上由 指令周期 和 晶振频率 共同决定。理解这两者的关系,是掌握单片机底层控制的关键。 📌 1. 节拍与指令周期 &…...
处理动态分页:自动翻页与增量数据抓取策略-数据议事厅
一、案例场景 Lily(挥舞着数据报表):“用户反馈我们的股票舆情分析总是缺失最新跟帖!这些动态分页像狡猾的狐狸,每次抓取都漏掉关键数据!” 小王(调试着爬虫代码):“传…...
用android studio模拟器,模拟安卓手机访问网页,使用Chrome 开发者工具查看控制台信息
web 网页项目在安卓手机打开时出现问题,想要查看控制台调试信息。记录一下使用android studio 模拟器访问的方式。 步骤如下: 1.安装android studio,新增虚拟设备(VDM- virtual device manager) 点击Virtual Device Manager后会…...
动态规划中固定倒数第二个数与倒数第一个数的区别与应用场景分析 —— 从最长等差数列问题到统计等差数列个数的填表策略对比
目录 1. 问题目标的区别 (1)找到最长的等差数列 (2)统计等差数列的个数 2. 填表顺序的区别 (1)固定倒数第二个数(i) (2)固定倒数第一个数(j&…...
【C语言】数组篇
目录 引言一维数组数组的定义数组的初始化完全初始化部分初始化省略数组长度 数组元素的访问 多维数组二维数组的定义二维数组的初始化完全初始化部分初始化省略第一维长度 二维数组元素的访问 遍历数组元素遍历一维数组遍历二维数组 数组作为函数参数一维数组作为函数参数二维…...
【Linux内核系列】:深入理解缓冲区
🔥 本文专栏:Linux 🌸作者主页:努力努力再努力wz ★★★ 本文前置知识: 文件系统以及相关系统调用接口 输入以及输出重定向 那么在此前的学习中,我们了解了文件的概念以及相关的系统调用接口,并…...
【互联网性能指标】QPS/TPS/PV/UV/IP/GMV/DAU/MAU/RPS
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、(架构篇)清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...
Django工程获取请求参数的几种方式
在 Django 中获取请求参数的完整方法如下: 一、GET 请求参数获取 def view_func(request):# 获取单个参数(推荐方式)name request.GET.get(name, default) # 带默认值age request.GET.get(age, 0)# 获取多个同名参数(如复选框…...
【微知】如何根据内核模块ko查看所依赖其他哪些模块?(modinfo rdma_ucm |grep depends)
背景 有些情况下查看某个模块被哪些模块依赖可以用lsmod看到后面的列表,但是反向查看就要麻烦一些,比如某个模块依赖哪些其他模块?通过modinfo xxx.ko获取里面的depends相关信息 方法 modinfo rdma_ucm |grep depends实操 实操前先看依赖…...
基于大模型的结节性甲状腺肿诊疗全流程预测与方案研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义 1.3 国内外研究现状 二、大模型预测原理与方法 2.1 相关大模型概述 2.2 数据收集与预处理 2.3 模型训练与验证 三、术前预测与评估 3.1 结节性质预测 3.1.1 良恶性判断 3.1.2 与传统诊断方法对比 3.2 手术风险预测…...
Linux安装ComfyUI
Linux安装ComfyUI 1. ComfyUI2. 放置模型文件3. 创建python虚拟环境3.1 删除 Conda 虚拟环境 4. python虚拟环境,安装PyTorch5. 安装依赖6. 运行7. 打开8. 下载模型 移动到路径 1. ComfyUI # cat /etc/issue Ubuntu 20.04.6 LTS \n \lmkdir comfyUI cd comfyUI/git…...
订阅指南:用关键指标驱动业务增长
分析订阅业务远非看似简单。仅仅增加订阅数可能并不比维持一批忠实用户更有利可图。深入分析订阅数据及其背后的运作机制,将帮助您优化产品决策、预测收入并促进增长。本文将为您解读关键订阅指标的实际意义,并展示如何通过订阅宝这一专业工具࿰…...
2025华为OD机试真题E卷 - 螺旋数字矩阵【Java】
题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法:给出数字个数 n (0 < n ≤ 999)和行数 m(0 < m ≤ 999),从左上角的 1 开始,按照顺时针螺旋向内写方式,依次写出2,3,…,n,最终形成一个 m 行矩阵。小明对这个矩阵有些要求: 1、…...
【开发学习】如何使用deepseek创建记录事件时间的PC应用程序
本文记录了尝试使用deepseek创建应用程序的过程,实现记录事件&时间的PC应用程序,包括创建代码、测试及调整。 目的:创建一个应用,用户输入文本提交,应用记录下时间和文本,数据留存在excel和应用程序中。…...
OSPF-单区域的配置
一、单区域概念: 单区域OSPF中,整个网络被视为一个区域,区域ID通常为0(骨干区域)。所有的路由器都在这个区域内交换链路状态信息。 补充知识点: OSPF为何需要loopback接口: 1.Loopback接口的…...
【2025力扣打卡系列】0-1背包 完全背包
坚持按题型打卡&刷&梳理力扣算法题系列,语言为python3,Day5 0-1背包【目标和】 有n个物品,第i个物品的体积为w[i], 价值为v[i]。每个物品至多选一个,求体积和不超过capacity时的最大价值和常见变形 至多装capacity&#x…...
分布式锁—Redisson的同步器组件
1.Redisson的分布式锁简单总结 Redisson分布式锁包括:可重入锁、公平锁、联锁、红锁、读写锁。 (1)可重入锁RedissonLock 非公平锁,最基础的分布式锁,最常用的锁。 (2)公平锁RedissonFairLock 各个客户端尝试获取锁时会排队,按照队…...
OpenEuler24.x下ZABBIX6/7实战1:zabbix7.2.4安装及zabbix-agent安装
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 1 安装及准备 先决条件:建议使用CentOS8以上的操作系统。 CentOS8.5.2111内核版本为 图1- 1 华为OpenEuler24(以后简称OE24)的内核为 [rootzbxsvr ~]# uname -r 5.10.0-…...
人工智能技术篇*卷(一)
了解人工智能的发展历史,会让我们心中有个大概了解,但这远远不够,我们起码还要知道大概有什么技术,怎么用它处理问题,有需要的话最好深入到算法原理。我们先从整体上看这个技术,接下来将不断细化。 我们知…...
ROS实践一构建Gazebo机器人模型文件urdf
URDF(Unified Robot Description Format)是一种基于XML的格式,用于描述机器人模型的结构、关节、连杆和传感器信息,并可以与Gazebo、RViz等仿真环境结合使用。 一、基础语法 1. urdf文件组成 URDF 主要由以下几个核心元素&#…...
C++学习——哈希表(一)
文章目录 前言一、哈希表的模板代码二、哈希计数器三、哈希表中的无序映射四、哈希表的总结 前言 本文为《C学习》的第11篇文章,今天学习最后一个数据结构哈希表(散列表)。 一、哈希表的模板代码 #include<iostream> using namespace…...
DeepSeek R1在医学领域的应用与技术分析(Discuss V1版)
DeepSeek R1作为一款高性能、低成本的国产开源大模型,正在深刻重塑医学软件工程的开发逻辑与应用场景。其技术特性,如混合专家架构(MoE)和参数高效微调(PEFT),与医疗行业的实际需求紧密结合,推动医疗AI从“技术驱动”向“场景驱动”转型。以下从具体业务领域需求出发,…...
Git 如何配置多个远程仓库和免密登录?
自我简介:4年导游,10年程序员,最近6年一直深耕低代码领域,分享低代码和AI领域见解。 通用后台管理系统 代号:虎鲸 缘由 每次开发后台界面都会有很多相同模块,尝试抽离出公共模块作为快速开发的基座。 目标…...
