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

一、哈希函数的定义

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

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

二、哈希函数的功能

(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)在计算上是不可行的。
三个安全性之间的关系

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin linkedMapOf filterKeys

Kotlin linkedMapOf filterKeys fun main(args: Array<String>) {val lhm linkedMapOf<String, Any>(Pair("name", "phil"), //因为key相同都为 name&#xff0c;被后面的覆盖。Pair("year", 2024),Pair("name", "f…

Gradle基础:从入门到掌握

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 在现代软件开发中&#xff0c;自动化构建工具是提高效率和管理依赖的重要手段。而Gradle作为一种灵活且强大的构…

SRS流媒体服务器概述

SRS/5.0(Bee) is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181. 翻译&#xff1a;SRS/5.0(Bee)是一款简洁、高效、实时的视频服务器&#xff0c;支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DAS…

欧美海外媒体发稿,国外新闻发布,外媒发布

欧美媒体的影响力 欧美媒体在全球范围内具有较大的影响力&#xff0c;其发稿内容更具全球化视野和多样化观点。欧美媒体多以英语为主要报道语言&#xff0c;覆盖的领域包括政治、经济、文化、科技等多个方面。例如&#xff0c;BBC、CNN、纽约时报等媒体机构的新闻报道被广泛引…

zdppy+onlyoffice+vue3解决文档加载和文档强制保存时弹出警告的问题

解决过程 第一次排查 最开始排查的是官方文档说的 https://api.onlyoffice.com/editors/troubleshooting#key 解决方案。参考的是官方的 https://github.com/ONLYOFFICE/document-server-integration/releases/latest/download/Python.Example.zip 基于Django的Python代码。 …

Linux 复现Docker NAT网络

Linux 复现Docker NAT网络 docker 网络的构成分为宿主机docker0网桥和为容器创建的veth 对构成。这个默认网络命名空间就是我们登陆后日常使用的命名空间 使用ifconfig命令查看到的就是默认网络命名空间&#xff0c;docker0就是网桥&#xff0c;容器会把docker0当成路由&…

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日&#xff0c;在2024世界人工智能大会上&#xff0c;容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上&#xff0c;容联云发布了容犀智能大模型应用升级&#xff0c;该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…

User parameters 用户参数与Web监控

目录 一. 自定义键介绍 二. 制作步骤 1. 添加无可变部分参数 2. 添加有可变参数 3. 使用用户参数监控php-fpm 服务的状态 三. Web页面导入应用监控 四. Web监控 主要功能和操作&#xff1a; 开启方式 官方预定义监控项文档https://www.zabbix.com/documentation/6…

代码随想录(day1)二分法

if语句的基本语法 if 要判断的条件: 条件成立的时候&#xff0c;要做的事举例&#xff1a; if nums[middle]<target:leftmiddle1 while语句的基本语法&#xff1a; while 判断条件(condition)&#xff1a;执行语句(statements)举例&#xff1a; while left<right:midd…

【小鸡案例】表单focus和blur事件用法

input中有2个属性&#xff0c;一个是focus获取焦点&#xff0c;一个是blur失去焦点。获取焦点就是我们点击输入框时输入框被选中&#xff1b;失去焦点即点击输入框以外的区域&#xff0c;今天就用这两种属性做一个点击输入框的动画效果。 先写个输入框&#xff0c;代码如下&am…

基于LabVIEW的设备安装螺栓连接设计

介绍了一种基于LabVIEW的辅助设备安装螺栓连接设计案例。通过LabVIEW软件&#xff0c;实现了从螺栓规格预估、强度校核到物料选用的整个流程的软件化&#xff0c;提高了设计效率和安装可靠性。 项目背景 在轨道车辆设备安装中&#xff0c;螺栓连接作为一种常见的紧固方式&…

【java计算机毕设】线上花店销售商城系统java MySQL ssm JSP maven项目代码源码+文档ppt

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】线上花店销售商城系统MySQL ssm JSP maven项目代码源码文档PPT 小组设计代码 2项目介绍 系统功能&#xff1a; 线上花卉小铺系统包括管理员、用户俩种角色。 用户端&#xff1a;1.注册登录&#xff1a;游客…

系统化学习 H264视频编码(02) I帧 P帧 B帧 引入及相关概念解读

说明&#xff1a;我们参考黄金圈学习法&#xff08;什么是黄金圈法则?->模型 黄金圈法则&#xff0c;本文使用&#xff1a;why-what&#xff09;来学习音H264视频编码。本系列文章侧重于理解视频编码的知识体系和实践方法&#xff0c;理论方面会更多地讲清楚 音视频中概念的…

JavaWeb开发基础7个Web术语解析

7个Web术语 Website: static vs dynamic HTTP HTTP Requests GET vs POST Servlet Container Server: Web vs Application Content Type Website: static vs dynamic 网站内容包括文本、图片、音频、视频&#xff0c;通过URL来访问。网站分为静态网站和动态网站。 静态网…

HBuilder X 小白日记03-用css制作简单的交互动画

:hover选择器&#xff0c;用于选择鼠标指针浮动在上面的元素。 :hover选择器可用于所有元素&#xff0c;不只是链接 :link选择器 设置指向未被访问页面的链接的样式 :visited选择器 用于设置指向已被访问的页面的链接 :active选择器 用于活动链接

mp4视频太大怎么压缩不影响画质,mp4文件太大怎么变小且清晰度高

在数字化时代&#xff0c;我们常常面临视频文件过大的问题。尤其是mp4格式的视频&#xff0c;文件大小往往令人望而却步。那么&#xff0c;如何在不影响画质的前提下&#xff0c;有效地压缩mp4视频呢&#xff1f;本文将为您揭秘几种简单实用的压缩技巧。 在分享和存储视频时&am…

白嫖A100活动来啦,书生·浦语大模型全链路开源体系

扫码参加即可获得&#xff1a; 第一节 书生浦语大模型全链路开源体系 书生浦语大模型的开源历程。 从模型到应用的典型流程 书生浦语的开源体系&#xff0c;包含从数据、预训练、微调、部署、评测、应用等环节

C# Winform自制多轴力臂(简单易懂,方便扩展)

WinForms框架广泛应用于上位机开发领域&#xff0c;其中对力臂的精准控制是常见需求之一。本文深入探讨了如何创建自定义的多轴力臂图形控件&#xff0c;不仅涵盖了力臂图形控件的角度调节机制&#xff0c;还详细展示了如何实现力臂运动的生动动态效果&#xff0c;为开发者提供…

【web前端HTML+CSS+JS】--- JS学习笔记03

一、JS介绍 可以在前端页面上进行逻辑处理&#xff0c;来解决表单的验证等问题&#xff0c;提升效率&#xff0c;直接在前端提示问题&#xff0c;减少服务器压力 应用1&#xff1a;可以做静态验证和动态验证&#xff08;进行异步请求&#xff09; 应用2&#xff1a;可以解析后…

Java---包装类与泛型

1.包装类 1.1 包装类 在Java中&#xff0c;由于基本数据类型不是继承Object类&#xff0c;为了在泛型代码中可以支持基本数据类型&#xff0c;Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别&#xff0c;其他的都是首字…