数字信任的底层逻辑:密码学核心技术与现实应用
安全和密码学 --The Missing Semester of Your CS Education
目录
- 熵与密码强度
- 密码散列函数
- 密钥体系
3.1 对称加密
3.2 非对称加密 - 信任模型对比
- 典型应用案例
- 安全实践建议
- 扩展练习
- 杂项
密码学是构建数字信任的基石。
本文浅析密码学在现实工具中的应用,涵盖
1)熵 2)散列函数 3)加密体系;

一、熵与密码强度
1.1 熵的数学定义
熵(Entropy)的计算公式:
H = log₂(n)
其中n为可能的组合数
1.2 密码强度评估
| 密码类型 | 熵值计算 | 示例密码 |
|---|---|---|
| 4单词组合 | 4×log₂(100000) ≈ 66.4 bits | correcthorsebatterystaple |
| 8字符混合密码 | log₂(62⁸) ≈ 47.5 bits | rg8Ql34g |
1.3 破解时间估算
- 4单词密码:约1.5×10¹⁹年
- 8字符密码:约1.5×10⁷年
二、密码散列函数
2.1 核心特性
$ printf 'hello' | sha1sum
aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
- 确定性
- 不可逆性
- 碰撞抵抗性
2.2 应用场景
- Git内容寻址存储
- 软件完整性验证
- 密码承诺机制
三、密钥体系
3.1 对称加密(AES)
openssl aes-256-cbc -salt -in plain.txt -out encrypted.bin
3.2 非对称加密(RSA/ED25519)
ssh-keygen -t ed25519 -o -a 100
3.2.1)Q1:为什么私钥能解开公钥上的锁?
A:大数定理。具体见下文:
非对称加密算法的数学设计–RSA算法为例
3.2.2)Q2:数字签名是什么?
A:[下文括号内,代表函数的x ]
- 发送方:签名 = 私钥加密 [ hash(发送的消息) ];
- 接收方:hash_1= 公钥解密[签名];
- THEN 比较:得到的hash_1 VS hash_2(收到的消息);
- IF 相等,证明:收到的消息 = 发送的消息;
密码学中的数字签名是什么?
定义: 数字签名是一种基于密码学的技术,用于验证数据的真实性、完整性和不可否认性。它类似于现实中的手写签名,更安全、不可伪造。
核心原理:
非对称加密
:使用一对密钥(公钥和私钥)。
- 私钥:由签名者秘密保存,用于生成签名。
- 公钥:公开分发,用于验证签名。
哈希函数:通常先对消息生成唯一的哈希值(摘要),再对哈希值签名,提高效率。
工作流程:
- 签名生成:发送方用私钥对消息的哈希值加密,生成签名。
- 签名验证:接收方用发送方的公钥解密签名,得到哈希值,再对比自己计算的哈希值是否一致。
作用:
- 身份认证:确认消息来源(谁签的名)。
- 完整性:确保消息未被篡改。
- 不可否认性:签名者事后无法否认自己的签名。
常见算法:RSA、ECDSA(比特币使用)、EdDSA等。
3.3 密钥生成函数(KDF)
- 密码存储方案:
KDF(password + salt) - 推荐迭代次数:≥100,000次
四、信任模型对比
| 模型类型 | 代表产品 | 验证方式 | 适用场景 |
|---|---|---|---|
| 首次信任 | Signal | Safety Number比对 | 即时通讯 |
| 信任网络 | PGP | 密钥签名链 | 邮件加密 |
| 社交证明 | Keybase | 社交媒体验证 | 跨平台身份 |
五、典型应用案例
5.1 SSH身份验证流程
5.2 全盘加密方案
- Linux: LUKS + cryptsetup
- Windows: BitLocker
- macOS: FileVault
5.3 密码管理器架构
+----------------+
| 主密码 |
+--------+-------+↓
+----------------+
| KDF生成密钥 |
+--------+-------+↓
+----------------+
| AES加密密码库 |
+----------------+
六、安全实践建议
- 启用两步验证(2FA)
- 使用密码管理器生成高熵密码
- 定期更新SSH密钥(推荐ED25519)
- 验证下载文件的哈希值
- 对敏感提交进行GPG签名
七、扩展练习
# 验证文件完整性
curl -LO https://debian.org/checksums
sha256sum -c SHA256SUMS# 创建签名提交
git commit -S -m "安全更新"
git show --show-signature
s://debian.org/checksums
sha256sum -c SHA256SUMS
创建签名提交
git commit -S -m "安全更新"
git show --show-signature
杂项:
Q3:“挖比特币”为什么叫“挖”?到哪里挖?
- 类似一次种哈希计算竞赛。
- 需要通过计算“挖掘”才能获得;
- 矿工通过解决复杂数学难题(哈希计算)来竞争记账权,成功者获得比特币奖励,过程需要消耗算力(类似“挖”的劳力)。
- 涉及区块链技术。
相关文章:
数字信任的底层逻辑:密码学核心技术与现实应用
安全和密码学 --The Missing Semester of Your CS Education 目录 熵与密码强度密码散列函数密钥体系 3.1 对称加密 3.2 非对称加密信任模型对比典型应用案例安全实践建议扩展练习杂项 密码学是构建数字信任的基石。 本文浅析密码学在现实工具中的应用,涵盖 1&…...
全面理解-深拷贝与浅拷贝
在 C 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种完全不同的对象拷贝策略,主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…...
Redis分布式锁故障处理:当Redis不可用时的应对策略
Redis分布式锁故障处理:当Redis不可用时的应对策略 在分布式系统中,Redis因其高性能和丰富的特性常被用于实现分布式锁。但当加锁过程中Redis服务不可用时,系统将面临严重挑战。本文将深入探讨这一问题,并提供多维度解决方案。 目…...
WordPress平台如何接入Deepseek,有效提升网站流量
深夜改代码到崩溃?《2024全球CMS生态报告》揭露:78%的WordPress站长因API对接复杂,错失AI内容红利。本文实测「零代码接入Deepseek」的保姆级方案,配合147SEO的智能发布系统,让你用3个步骤实现日均50篇EEAT合规内容自动…...
ROS ur10机械臂添加140夹爪全流程记录
ROS ur10机械臂添加140夹爪 系统版本:Ubuntu20.04 Ros版本:noetic Moveit版本:moveit-noetic 参考博客: ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例…...
16、Python面试题解析:python中的浅拷贝和深拷贝
在 Python 中,浅拷贝(Shallow Copy) 和 深拷贝(Deep Copy) 是处理对象复制的两种重要机制,它们的区别主要体现在对嵌套对象的处理方式上。以下是详细解析: 1. 浅拷贝(Shallow Copy&a…...
第十九天 HarmonyOS的文件操作和本地存储
一、前言:为什么需要掌握文件操作与本地存储? 在移动应用开发中,文件操作和本地存储是每个开发者都必须掌握的核心技能。无论是保存用户配置、缓存网络数据,还是处理图片/视频等多媒体文件,都需要通过文件系统进行操作…...
VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合
VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合 flyfish VLM的传统训练依赖于监督学习(直接拟合问答对),而规则奖励函数通常用于强化学习(通过试错和奖励反馈优化策略…...
FFMPEG编码容错处理解决办法之途径----升级库文件
在qt开发环境下接收网络数据,调用ffmpeg解码播放视频,出现闪屏现象,具体现象可以使用操作系统自带的ffplay播放器播放原始视频流可复现;而使用操作系统自带的mpv播放器播放视频则不会出现闪屏;闪屏时会报Could not fin…...
uniapp h5端和app端 使用 turn.js
前提:添加页后,添加页与当前页会重叠在一起,不知道为什么,没有找到解决办法 1.h5端 <template><view class"container"><view id"flipbook"><view class"page page1">Page 1</view><view class"page pag…...
【idea问题排查技巧】
以下是针对 IDEA 中 日志打标(动态标记) 和 全链路追踪 功能的分步详解,结合具体场景和操作截图说明,帮助快速掌握实战技巧。 一、动态日志打标:不修改代码输出关键信息 1. 断点日志打印(非侵入式打标) 场景:在调试时,需要临时查看某个变量的值,但不想修改代码添加…...
【入门音视频】音视频基础知识
🌈前言🌈 这个系列在我学习过程中,对音视频知识归纳总结的笔记。因为音视频相关讲解非常稀少,所以我希望通过这个音视频系列,跟大家一起学习音视频,希望减少初学者在学习上的压力。同时希望也欢迎指出文章的…...
JMeter性能问题
性能测试中TPS上不去的几种原因 性能测试中TPS上不去的几种原因_tps一直上不去-CSDN博客 网络带宽 连接池 垃圾回收机制 压测脚本 通信连接机制 数据库配置 硬件资源 压测机 业务逻辑 系统架构 CPU过高什么原因 性能问题分析-CPU偏高 - 西瓜汁拌面 - 博客园 US C…...
软考高级信息系统项目管理师笔记-第2章信息技术发展
第2章 信息技术发展 2.1 信息技术及其发展 1、按表现形态的不同,信息技术可分为硬技术(物化技术)与软技术(非物化技术)。前者指各种信息设备及其功 能,如传感器、服务器、智能手机、通信卫星、笔记本电脑。后者指有关信息获取与处理的各种知识、方法 与技能,如语言文字…...
大语言模型(LLM)提示词(Prompt)高阶撰写指南
——结构化思维与工程化实践 一、LLM提示词设计的核心逻辑 1. 本质认知 LLM是「超强模式识别器概率生成器」,提示词的本质是构建数据分布约束,通过语义信号引导模型激活特定知识路径。优秀提示词需实现: 精准性:消除歧义&#…...
捷 C++ 课程学习笔记:STL 应用与复杂度分析
一、STL 六大组件 STL(Standard Template Library)是 C 标准库的重要组成部分,提供了通用的模板类和函数,用于实现常用的数据结构和算法。STL 主要包括以下六大组件: 容器(Containers)…...
【python】提取word\pdf格式内容到txt文件
一、使用pdfminer提取 import os import re from pdfminer.high_level import extract_text import docx2txt import jiebadef read_pdf(file_path):"""读取 PDF 文件内容:param file_path: PDF 文件路径:return: 文件内容文本"""try:text ext…...
数据结构☞泛型
一.基础定义与应用方向 1.定义: 一般的类和方法,只能使用具体的类型 : 要么是基本类型,要么是自定义的类。如果要编写可以 应用于多种类型 的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《 Java 编程思想》对泛型的介…...
MFC学习笔记-1
一、编辑框和按钮 //.h文件private:CString str;//给窗口类加了一个变量(定义一个成员变量),关联到IDC_EDIT1中(要在实现中关联,源文件文件夹中)CString str2;//接收button2,和IDC_EDIT2绑定 p…...
html中rel、href、src、url的区别
1.url url(统一资源定位符):是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。 2.href href:Hypertext Reference的缩写。 意思是超文本引用。 3.rel rel:relatio…...
hot100-二叉树
二叉树 二叉树递归 相当于这个的顺序来回调换 class Solution {private List<Integer> res new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if(root null)return res;inorderTraversal(root.left);res.add(root.val);inorde…...
嵌入式项目:STM32刷卡指纹智能门禁系统
本文详细介绍基于STM32的刷卡指纹智能门禁系统。 获取资料/指导答疑/技术交流/选题/帮助,请点链接: https://gitee.com/zengzhaorong/share_contact/blob/master/stm32.txt 1 系统功能 1.1 功能概述 本系统由STM32硬件端(下位机)…...
短剧小程序系统源码
短剧小程序系统源码 今天我要向大家介绍的是最新作品——短剧小程序系统源码。这不仅仅是一款简单的播放工具,它背后蕴含的强大功能能够帮助你的短剧业务实现质的飞跃! 为什么说这款源码很厉害? 首先,在当今竞争激烈的市场环境…...
鸿蒙5.0实战案例:基于measure实现的文本测量
往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录) ✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~ ✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ ✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景&#…...
C#中级教程(2)——走进 C# 面向对象编程:从基础到进阶的深度探索
一、为什么选择面向对象编程 在软件开发的演进过程中,随着程序规模和复杂度的不断增加,传统的编程方式逐渐暴露出局限性。面向对象编程应运而生,它就像是一位智慧的组织者,将程序中的功能进行模块化划分。每个模块各司其职&#x…...
基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“流浪动物救助系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…...
基于WebRTC与AI大模型接入EasyRTC:打造轻量级、高实时、强互动的嵌入式音视频解决方案
随着物联网和嵌入式技术的快速发展,嵌入式设备对实时音视频通信的需求日益增长。然而,传统的音视频解决方案往往存在体积庞大、实时性差、互动体验不佳等问题,难以满足嵌入式设备的资源限制和应用场景需求。 针对以上痛点,本文将介…...
Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式
Windows(奇思妙想) - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式 前言 Windows启用OpenSSH客户端后就可以通过SSH的方式访问Windows了。但是通过SSH启动的程序: 无法显示图形界面会随着SSH进程的结束而结束 于是想到了一种通过执行“计划…...
应用层的协议-http/https的状态码
1xx:表示临时响应,需要操作者继续操作 2xx:成功,操作被成功接受并处理 3xx:一般是重定向问题 4xx:客户端的问题 5xx:服务端的问题 1xx: 100: 表示服务器收到客户端的第一部分请…...
前端Sass面试题及参考答案
目录 什么是 Sass? Sass 和 CSS 的主要区别是什么? Sass 中如何处理列表? Sass 中如何处理映射(map)? Sass 中如何使用函数? Sass 中如何使用内置函数? Sass 中如何设置默认值? Sass 中的 @function 和 @mixin 有什么区别? Sass 中如何实现模块化? Sass 中…...
