恋爱通信史之完整性
在前面的章节中,介绍了对通信消息的加密,可以保证保密性(机密性)。虽说中间人无法解密通信消息的内容,但是可以篡改通信的消息。在接受者视角来看,是无法识别通信消息是否被篡改。因此,必须引入一种机制,保证消息的完整性。
单向散列函数
单向散列函数将任意长度的数据通过一个hash散列函数,转换成具有固定长度的值,即为hash值。单向散列函数,有多个别称,比如Hash算法,消息摘要算法(Message Digest Algorithms)。

特点:
- 相同的数据计算的hash摘要值相等。
- 整个hash过程是一个单向的,很难从hash值逆向推导出数据的内容,摘要值是不可逆的。
- 原始数据中只要有1个bit变化,两份数据计算的hash值也不同。
应用场景:
-
文件比较:比如在网站上下载文件时,与该文件对应的有其摘要值。为了避免文件在传输过程中被篡改,客户端文件下载完成后,可以通过hash算法计算该文件的hash值是否与网站提供的相等,即可确定文件是否被篡改。再比如平时软件调试时,为了确认运行环境的二进制文件是否升级成功,可以计算编译环境和运行环境中的同名文件的hash值来判定。
-
通信消息摘要:在通信过程中,为了确定消息是否被中间人篡改,也需要对通信的内容计算摘要。

-
身份校验:大家所熟知使用的微信,QQ和支付宝,以及我们的PC登录密码,在系统中存储的是用户密码的hash值,而非用户的原始密码。如果存储的是用户的原始密码,系统一旦出现漏洞,黑客就可能获取到所有用户的原始密码,这是相当严重的网络安全问题。
常见的Hash算法
- MD5:MD5是一种比较常见的Hash算法,摘要值长度固定是128bits。目前已经被证实不安全了。通过彩虹表,对不同的消息组合进行迭代运算,如果运算的Hash值匹配,那么就猜出原文数据了。
- SHA1:SHA1算法的摘要值长度是160bits,在安全性上已经受到质疑。因此,不建议继续使用SHA1算法计算摘要。
- SHA2:SHA2算法目前来说是安全的,且也是目前推荐的Hash算法。主要有四种SHA-256, SHA-224, SHA-384, SHA-512,分别输出256bits, 224bit, 384bits, 512bits。
- SHA3:SHA3算法并不是为了取代SHA2,而是完全不同的算法。主要有四种SHA3-256, SHA3-224, SHA3-384, SHA3-512,分别输出256bits, 224bit, 384bits, 512bits。
消息验证码(Message Authentication Code, MAC)
单向散列函数(Hash算法),只能避免消息被篡改,如果摘要值也被篡改,那么就无法保证数据的完整性了。

因此,需要新引入带秘钥的消息验证码的机制。在对消息计算消息摘要时,连同秘钥一起作为MAC运算的输入,计算得到的MAC值与消息一并发给接受者。接受者接收到的消息与秘钥输入到MAC运算算法,将计算后的MAC值与接收的MAC进行比较,即可确定消息的完整性。

特点:
- 证明消息没有被篡改,保证完整性。
- 证明消息是秘钥拥有者发送。
应用场景:
- 在通信内容无敏感信息时,只是为了保证信息的完整性,防止被篡改,可以使用MAC算法来保证。
- 在加密通信中,可以先基于明文计算MAC值,也可以基于密文计算MAC值,保证消息的完整性。
即便在通信过程中MAC值同样被修改了,那么接收方就无法比较成功。如果需要修改成匹配的MAC值,必须还要获取到通信双方中所使用的秘钥。

常见的MAC算法
- CBC-MAC: 由块密码算法的CBC模式演化而来,最后一个密文的分组的值就是MAC值。在OPENSSL中未直接提供该算法。
- HMAC: 使用Hash算法作为加密基元。常见的有HMAC-SHA-1、HMAC-SHA256、HMAC-SHA512。
相关文章:
恋爱通信史之完整性
在前面的章节中,介绍了对通信消息的加密,可以保证保密性(机密性)。虽说中间人无法解密通信消息的内容,但是可以篡改通信的消息。在接受者视角来看,是无法识别通信消息是否被篡改。因此,必须引入一种机制,保…...
Docker 容器的初始化设置
虽然现在Conntainerd 大有取代Docker作为容器运行时的趋势,但是docker还是有自己的优势在。尤其是对于开发者来讲,使用Docker 比使用 containerd 方便很多,尤其是在Docker Desktop等工具的加持下。 本文主要面向Docker的初、中级学者…...
密码编码学与网络安全(第五版)答案
2.4题: 通过如下代码分别统计一个字符的频率和三个字符的频率,"8"——"e",“;48”——“the”,英文字母的相对使用频率,猜测频率比较高的依此为),t,*,5…...
C++初阶(十四)--STL--vector的模拟实现
文章目录 一、vector的基本结构 二、默认成员函数的实现 1.构造函数 2.拷贝构造函数 3.赋值运算符重载 4. 析构函数 三、迭代器相关函数 begin和end 四、容量和大小相关函数 size capacity reserve resize empty 五、修改容器的函数 push_back pop_back insert…...
贴代码框架PasteForm特性介绍之query,linkquery
简介 PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管…...
高防IP如何构建安全高效的数字政务新生态
随着数字化转型浪潮的日渐汹涌,政务行业也在朝着智慧政务的方向高速迈进,提升了为民服务的整体效率。然而,凡事都有双面性,随着政务服务线上化的深入发展,网络安全威胁也日益严峻。黑客攻击、DDoS攻击、CC攻击等安全事…...
数据结构与算法——1122—复杂度总结检测相同元素
1、复杂度总结 1、时间复杂度计算遵循的原则 1、复杂度与其具体的常系数无关(即:常数项的系数不要) 2、多项式级复杂度相加的时候,把其高项作为结果(即:多项式只保留最大项) 3、O(1)含义为&…...
HTML通过JavaScript获取访问连接,IP和端口
<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Get IP Address</title> <script> function displayURL() { var url window.location.href; // 获取当…...
自动化测试过程操作细节
一、软件与框架介绍 1. Postman 读音:[pəʊstmən](剖斯特曼) 介绍:API开发与测试的得力助手,通过直观界面发送HTTP请求,查看响应数据。支持环境变量、集合、脚本等功能。 主要特点:易于使用…...
AR智能眼镜|AR眼镜定制开发|工业AR眼镜方案
AR眼镜的设计与制造成本主要受到芯片、显示屏和光学方案的影响,因此选择合适的芯片至关重要。一款优秀的芯片平台能够有效提升设备性能,并解决多种技术挑战。例如,采用联发科八核2.0GHz处理器,结合12nm制程工艺,这种低…...
从〇开始深度学习(0)——背景知识与环境配置
从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…...
实验室管理技术革新:Spring Boot系统
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
C语言 蓝桥杯某例题解决方案(查找完数)
蓝桥杯原题: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6 1 2 3.编程找出1000以内的所有完数。 这个题没有很大的难点,与我们上一个解决的问题“质因数分解”不同,它不需要判断因数是否是质数,因此…...
Prompting LLMs to Solve Complex Tasks: A Review
文章目录 题目简介任务分解未来方向结论 题目 促使 LLM 解决复杂任务: 综述 论文地址:https://www.intjit.org/cms/journal/volume/29/1/291_3.pdf 简介 大型语言模型 (LLM) 的最新趋势显而易见,这体现在大型科技公司的投资以及媒体和在线社…...
C++ 编程指南05 - 编译时检查优于运行时检查
一:概述 编译时错误检查是C编程中一条非常重要的原则,它强调了在可能的情况下,应该优先依赖编译时检查(静态检查)而不是运行时检查。这样做的主要目的是提高程序的性能、安全性和可维护性。 编译时检查,即在…...
【优先算法】专题——双指针
1.移动零 移动零 题目描述: 思路: 本题我们把数组分块,将非零元素移动到左边,为零元素移动右边。 我们使用双指针算法(利用数组下标来充当指针) 两个指针的作用: cur:从左往右…...
CSP/信奥赛C++语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes
CSP/信奥赛C语法基础刷题训练(23):洛谷P1217:[USACO1.5] 回文质数 Prime Palindromes 题目描述 因为 151 151 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 151 …...
C语言练习.if.else语句.strstr
今天在做题之前,先介绍一下,新学到的库函数strstr 想要使用它,要先给它一个头文件<string.h> char *strstr(const char*str1,const char*str2); 首先:1.strstr的返回值是char,字符类型的。 2.两个实参ÿ…...
利用浏览器录屏
以下内容参考自网络 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title></title> </head> <body> <div class"left"> <di…...
python中的map、split、join函数的作用 => ACM输入输出流
map(func,iter) lst_str ["1", "2", "3"] # 得到lst_num为[1, 2, 3] lst_num list(map(int, lst_str))如果想把一个列表里的所有元素批量地调用某一个函数,并映射得到一个新的列表(原列表中元素相对位置不变࿰…...
3步免费解锁Cursor Pro:告别设备限制,永久享受AI编程助手高级功能
3步免费解锁Cursor Pro:告别设备限制,永久享受AI编程助手高级功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: …...
监控摄像头小众场景爆发,融合类产品成新蓝海
随着户外运动热潮的持续和物联网技术的全面落地,打猎相机市场在2025年迎来了真正的爆发期,并在2026年继续向智能化、网联化深度演进。根据最新的行业监测数据,2025年全球消费类IPC(网络摄像机)出货量突破1.92亿台&…...
为 Node.js 后端服务配置 Taotoken 作为大模型统一网关
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为 Node.js 后端服务配置 Taotoken 作为大模型统一网关 在构建基于大语言模型的 Node.js 后端服务时,直接对接多个模型…...
如何用500KB工具完全替代AWCC:AlienFX Tools终极指南
如何用500KB工具完全替代AWCC:AlienFX Tools终极指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools 你是否厌倦了Alienware Command Cente…...
长期使用Taotoken Token Plan套餐带来的成本节约感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐带来的成本节约感受 1. 项目背景与成本挑战 我们团队负责一个持续进行文本分析与内容生成的内部…...
用Playwright自动化测试工具,5分钟搞定网站短信验证码接口的批量测试
用Playwright实现短信验证码接口的自动化测试实战指南短信验证码作为现代Web应用的核心安全组件,其稳定性和防护能力直接影响用户体验和系统安全。根据2023年DevOps状态报告,超过60%的线上身份验证故障源于短信服务接口的异常。本文将带你用Playwright这…...
BetterNCM-Installer 完整指南:5步快速打造个性化网易云音乐体验
BetterNCM-Installer 完整指南:5步快速打造个性化网易云音乐体验 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否厌倦了网易云音乐客户端单调的功能?是否…...
STM32中断优先级到底怎么分?用医生叫号系统讲透NVIC抢占与响应优先级
STM32中断优先级到底怎么分?用医生叫号系统讲透NVIC抢占与响应优先级 在嵌入式系统开发中,实时响应能力往往是衡量系统性能的关键指标。想象一下,当您正在全神贯注地编写代码时,突然手机来电、微信消息和邮件通知同时响起——您会…...
抖音下载神器终极指南:免费批量下载视频、直播回放和音乐原声
抖音下载神器终极指南:免费批量下载视频、直播回放和音乐原声 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...
Cocos Creator资源加载优化:用AssetManager的preload和loadBundle提升游戏首屏速度
Cocos Creator资源加载优化:用AssetManager的preload和loadBundle提升游戏首屏速度当玩家首次打开你的游戏时,那几秒钟的等待时间可能决定了他们是否会继续玩下去。作为一款成熟的游戏引擎,Cocos Creator提供了强大的AssetManager系统来管理资…...
