【密码学】哈希函数与加密算法的关系

一、哈希函数的定义

        哈希函数(Hash Function),也被称为散列函数或杂凑函数, 是一种将任意长度的输入数据(通常称为“预映射”或“消息”)转换为固定长度输出(通常称为“哈希值”、“散列值”、“杂凑值”或“摘要”)的算法。
哈希函数的定义​​​​​​

【注】哈希值是固定长度的,哈希函数H是公开的。

        hash函数到底长什么样子?我们用一个简单的hash函数举例:

M是一个长消息,设M=(M_1,M_2,...,M_i,...,M_k),其中M_il长的比特串,定义哈希函数H如下

H(M) = M_1\oplus M_2\oplus...\oplus M_k

        解释一下这个简单的哈希函数,先把消息M分成k组,每组都是l长,那么哈希函数是进行异或运算的,得到的结果也必然是l长。这样无论多长的M消息,都能通过这个哈希函数生成固定长度的哈希值。

二、哈希函数的功能

(1)最重要的功能

数据完整性检验:哈希函数可以用于验证数据是否被修改。当数据被哈希后,如果数据的任何部分发生变化,重新计算的哈希值也会随之变化。因此,可以通过比较哈希值来判断数据的完整性。

数据完整性检验

         对上图做出解释:当一份数据首次被创建或接收时,会使用哈希函数计算出该数据的哈希值。这个哈希值就像是数据的一个指纹。计算出来的哈希值会被记录下来,通常与数据分开存储或传输,以防止篡改。当数据被再次使用或从远程位置下载时,接收者会重新计算数据的哈希值,并将其与之前记录的哈希值进行比较。

        如果两个哈希值匹配,这表明数据自第一次计算哈希值以来没有被篡改过,因此数据的完整性得到了验证。如果哈希值不匹配,则意味着数据可能已经被修改,或者在传输过程中发生了错误,这时数据的完整性被认为受到了破坏。

(2)其他功能

① 密码存储

        在用户身份验证系统中,用户的密码通常不是以明文形式存储,而是存储其哈希值。当用户登录时,系统对输入的密码进行哈希并与存储的哈希值进行比较,以验证用户的身份。

② 数字签名

        数字签名利用哈希函数将长消息压缩为较短的哈希值,然后使用私钥对该哈希值进行加密。这保证了消息的完整性和来源的真实性,因为只有拥有正确私钥的人才能生成有效的数字签名。

三、哈希函数满足条件及安全性定义

(1)哈希函数需要满足以下这些条件

  • hash函数的输入可以是任意长
  • hash函数的输出是固定长
任意长输入,得到固定长输出
  • 输入中的微小变化,也会导致哈希值显著改变(雪崩效益)
改变其中一个字,哈希值明显不同
  • 易于在软件和硬件实现
  • 相同的输入总是得到相同的输出(确定性)

(2)哈希函数需要满足的安全条件

  • 单向性:已知x,求H(x)较为容易;但是,已知h,求使得H(x)=hx在计算上是不可行的。
  • 抗弱碰撞性:已知x,找出y(y\neq x)使得H(y)=H(x)在计算上是不可行的。
  • 抗强碰撞性:找出任意两个不同的输入xy,使得H(y)=H(x)在计算上是不可行的。
三个安全性之间的关系

        从安全性的角度来说,单向性是最基础(最弱)的安全属性,抗强碰撞是最强的要求,它隐含了抗弱碰撞和单向性的安全性。换句话说,如果一个哈希函数是抗强碰撞的,那么它自然也是抗弱碰撞的和单向的。但是,反之则不一定成立;即,一个满足单向性和抗弱碰撞的哈希函数可能并不满足抗强碰撞性。

四、哈希函数与加密算法的关联

        哈希函数虽然经常与加密算法一起讨论,并且在很多安全相关的应用中发挥着关键作用,但哈希函数本身并不是一种加密算法。

特征加密算法哈希函数
可逆性双向的,数据可以通过加密算法加密,再通过解密算法恢复原始数据。单向的,从产生的哈希值几乎不可能反向计算出原始数据。
目的保护数据隐私,确保数据不会被未经授权的第三方读取。验证数据完整性和一致性,检测数据是否被篡改。
输出输出长度可变,依据加密模式和密钥长度。输出长度固定,不论输入数据长度如何。
安全性属性需要保证数据的机密性。需要满足抗碰撞性、预像抵抗性和二次预像抵抗性等安全属性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软链接node_modules

公司项目很多微应用的子项目公用同一套模板,也就会使用同一个node_modules 1.先创建3个同样的项目,并安装一个其中的一个node_modules给他丢到外边 2.win r -------> cmd --------> ctrlshift enter(已管理员身份打开cmd) 3.在窗口分别执行以下代码…

医学王者刊!影响因子自创刊只增不减,3区跃升1区,国人发文占比6成!

【SciencePub学术】今天给大家推荐的是一本医学领域的SCI,是1本颇富潜力的国产期刊。影响因子自创刊以来就逐年上涨,凭借自己的努力从中科院3区跃迁至中科院1区,据说很多人已经靠信息差吃上了这本期刊的红利,接下来给大家解析一下…

卷积是如何计算的

使用代码,看卷积是如何计算的。 torch.nn torch.nn.functional srtide 的用法,代表卷积核的步幅 import torch import torch.nn.functional as F # 这个是输入的一个二维矩阵 input torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],…

SpringBoot相关

SpringBoot 1. what springboot也是spring公司开发的一款框架。为了简化spring项目的初始化搭建的。 spring项目搭建的缺点: 配置麻烦依赖繁多tomcat启动慢 2 .springboot的特点(why) 自动配置 springboot的自动配置是一个运行时(更准确地说,是应用程…

【学术会议征稿】第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)

第三届人工智能与智能信息处理国际学术会议(AIIIP 2024) 2024 3rd International Conference on Artificial Intelligence and Intelligent Information Processing 第三届人工智能与智能信息处理国际学术会议(AIIIP 2024)将于…

SAP 物料批量执行MD02代码分享

通常我们在运行MRP的时候要么就是跑MD01整个工厂层级的,要么就是单个物料层级的MRP用MD02去单个物料去执行。 HANA后有了MRPLIVE,可以支持多物料的运行MRP,但是无法控制MRP的运行参数,根据采购类型跑出对应的单据,F跑出的采购申请,E跑出的是计划订单。 需求是要可以批量运…

网上下载的视频怎么转成mp4格式?教你一招轻松解决

网上拥有许多的视频资源,动漫,短视频,影视等等都层出不穷,很多小伙伴都会把一些视频进行下载下来,不过下载下来的视频都不是MP4格式的,在兼容性方面会比较的麻烦,会有播放器不支持的情况&#x…

SpringBoot新手快速入门系列教程十:基于Docker Compose,部署一个简单的项目

前述: 本篇教程将略过很多docker下载环境配置的基础步骤,如果您对docker不太熟悉请参考我的上一个教程:SpringBoot新手快速入门系列教程九:基于docker容器,部署一个简单的项目 使用 Docker Compose 支持部署 Docker 项…

Elon Musk开源Grok

转载自:AILab基地 早在6天前,马斯克就发文称xAI将开源Grok 图片 13小时前,马斯克开源了旗下公司X的Grok训练模型,并喊话OpenAI,你名字里的Open到底在哪里 图片 下面是xai-org的GitHub开源地址[https://github.com/x…

shein测试开发会问些啥?

🏆本文收录于《CSDN问答解惑-》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

【大模型搭建】部署Ollama,pull失败,手动构建方案

Ollama 是一个专注于简化大规模机器学习模型开发的框架。它提供了一系列工具来帮助开发者轻松地定义、训练和部署大型语言模型。 优点: • 提供了简洁的API,易于上手。 • 支持多种硬件加速选项,如GPU和TPU。 • 内置了许多预训练模型&#x…

常见点云处理总结汇总

点云处理是一系列操作和技术,用于分析和处理三维点云数据,以提取有用的信息并生成可视化结果。以下是常见的点云处理方法及其简要说明: 1. 点云预处理 滤波:去除噪声和无效点,如使用统计滤波、半径滤波等。下采样&a…

IDEA自动生成测试类以及测试方法(JUnit测试工具)

IDEA自动生成测试类以及测试方法 (1) 光标移至需要生成测试类的类后面,右击 Go To → Test, 或者直接使用快捷键 Ctrl Shift T 。 (2)点击 Create New Test (3)设置测试库和测试方法,点击 OK &#xff…

赋能 Web3 与 AI 的未来,TARS 协议如何重塑去中心化生态?

TARS 协议如何在 Web3 生态中引领 AI 技术的变革?作为新兴的模块化 AI 平台,TARS 通过整合先进的 AI 模型和区块链技术,为用户提供了更加智能、安全和高效的解决方案。让我们一起回顾第 16 期 TinTinAMA 的精彩内容吧! 在 TinTinL…

一场夏测杀出个“双冠王”,极越01成为纯电SUV标杆

文 | AUTO芯球 作者 | 雷慢 万万没想到,懂车帝夏测运动会杀出一匹最大的黑马,竟然是极越01。 当前正在进行的懂车帝夏测运动会,在“纯电SUV/MPV续航达成率”赛事中,极越01以85.8%的续航达成率获得第一名。并且由于赛制规则限制…

WebRTC批量发送消息API接口的特性有哪些?

WebRTC批量发送消息api接口怎么样?接口性能怎么用? WebRTC技术允许浏览器和移动应用进行实时通信。通过WebRTC,开发者可以构建视频、语音、数据共享等应用。AokSend将重点探讨WebRTC批量发送消息API接口的特性。 WebRTC批量发送消息API接口…

《昇思25天学习打卡营第1天|QuickStart》

说在前面 曾经接触过华为的910B服务级显卡,当时基于910B做了一些开发的工作,但是总感觉做的事情太低层,想要能自顶向下的了解下,因此开始了MindSpore的学习。另外也想给予提供的显卡,简单尝试下llm模型的训练&#xf…

静态时序分析:Leaf Cell(叶单元)

相关阅读​​​​​​​静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html 在DC中,leaf cell(叶单元)有时会出现在描述中,例如set_input_delay的-reference_pin选项的参数,就必须是一个端口或…

元组列表之案例

1.列表推导式 基本语法: [表达式 for语句1 if 语句1 for语句2 if语句2 ........ ] 1.零到九的平方列表 a [i*i for i in range(10)] print(a) 2.for 循环前面加if else #如果是偶数乘以2,如果是奇数直接输出 a [i*2 if i%2 0 else i for i in ran…

windows下安装和使用nacos

概述 Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发 现、服务配置、服务元数据及流且管理 Nacos官方文档:https://nacos.io/zh-cn/docs/quick-start.html Nacos下载地址:https://n…