什么是哈希函数

2023-11-14

什么是hash函数

哈希函数(Hash Function),也称为散列函数,给定一个输入x,它会算出相应的输出H(x)。哈希函数的主要特征是:

  • 输入x可以是任意长度的字符串
  • 输出结果即H(x)的长度是固定的
  • 计算 H(x) 的过程是高效的(对于长度为 n 的字符串 x ,计算出 H(x) 的时间复杂度应为 O(n) )

另外哈希函数一般还要求以下两种特点:

1、免碰撞:即不会出现输入 x≠y ,但是H(x)=H(y) 的情况,其实这个特点在理论上并不成立,比如目前比特币使用的 SHA256 算法,会有 2^256 种输出,如果我们进行 2^256 + 1 次输入,那么必然会产生一次碰撞,事实上,通过 理论证明 ,通过 2^130 次输入就会有99%的可能性发生一次碰撞,不过即使如此,即便是人类制造的所有计算机自宇宙诞生开始一直运算到今天,发生一次碰撞的几率也是极其微小的。

2、隐匿性:也就是说,对于一个给定的输出结果 H(x) ,想要逆推出输入 x ,在计算上是不可能的。如果想要得到 H(x) 的可能的原输入,不存在比穷举更好的方法。

hash 算法的原理是试图将一个空间的数据集映射到另外一个空间(通常比原空间要小),并利用质数将数据集能够均匀的映射。目前主流的 hash 算法有:md4md5sha系列

 

转载至:https://www.jianshu.com/p/bba9b61b80e7

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是哈希函数 的相关文章

  • 双击计算机文档,电脑双击文件都是打开属性窗口怎么办

    电脑双击文件都是打开属性窗口怎么办 电脑双击文件都是打开属性窗口怎么办 不知道电脑怎么回事 双击文件后显示的都是属性窗口 该怎么办呢 下面小编分享电脑鼠标双击文件都是打开属性窗口的解决办法 欢迎大家前来阅读 电脑双击文件都是打开属性窗口怎么
  • 实现token

    每天一篇之token实现 现在web开发基本上都会涉及到token 至于为什么要用这些就不再解释 就默默发一个token的util 下面是代码 import com auth0 jwt JWT import com auth0 jwt JW
  • android EasyLink给wifi模块配网

    相关文章 博客 http blog csdn net u010924834 article details 49491349 本文使用的是庆科wifi模块 http developer mico io downloads 庆科的开发者地址
  • Windbg查找单例对象

    在程序的达到一定规模之后 就会用到比较多的管理类 这种管理类多采用单例模式 在问题排查过程中往往需要看下管理类里面的某些状态是否符合预期 但是崩溃的堆栈在当前局部变量中并 无该单例的相关引用 单例的实现上是将一个实例化对象保存在静态变量中
  • 网关和IP地址不在同一个网段下

    海外的客户报告了一个问题 设备设置的网关地址不在设备所在的网段下面 例如 IP 192 168 135 2 NetMask 255 255 255 0 GateWay 192 168 8 1 现在的问题来了 设备能不能PING通网关 这个问
  • 解决vue 路由传参后退参数丢失的问题

    文章目录 业务需求 遇到问题 解决方案 利用localStorage 使用keep alive 业务需求 从A页面传参跳转B页面 B页面传参跳转C页面 C页面可以返回B页面 遇到问题 当C页面返回B页面时 由于B页面参数丢失导致页面渲染失败
  • Python爬虫逆向之加速乐

    先上链接 aHR0cHM6Ly93d3cubWlpdC5nb3YuY24v 网站分析 发现发起三次请求 第一次 状态码521 Set Cookie了一个jsluid 第二次 状态码依然是521 但是cookie里面多了一个jsl clear
  • C#使用Npgsql或SqlClient连接数据库

    目录 SqlClient连接SQL Server 安装SqlClient SqlConnection SqlCommand SqlConnection 和 SqlCommand的区别 Npgsql连接PostgreSQL 安装Npgsql
  • (java功能篇) jxl读取excel文本

    jxl是一个韩国人写的java操作excel的工具 在java的开源世界中 有两套比较有影响的API可供使用 一个是POI 一个是jExcelAPI 即jxl jxl功能相对POI比较弱一点 但jExcelAPI对中文支持非常好 API是纯
  • Restful API 接口设计标准以及规范

    RESTful概念 理解和评估以网络为基础的应用软件的架构设计 得到一个功能强 性能好 适宜通信的架构 REST指的是一组架构约束条件和原则 如果一个架构符合REST的约束条件和原则 我们就称它为RESTful架构 REST本身并没有创造新
  • 2021-11-15 入门前端VScode必装的常用插件, HTML+CSS常用属性速记.

    Html Css 学习 一 VSCode常用 1 VScode常用快捷键 新建文件 ctrl N 切换自动换行 alt Z 复制当前行 ctrl C ctrl V 执行在默认浏览器 alt B 设置vscode文件折叠属性 打开设置 gt
  • linux火狐无法连接网络,Ubuntu上火狐浏览器无法上网的解决方法

    网上有的方法是在浏览器中选择更新 后来找到了更加直接好用的方法 只需要几行命令就可以 1 在终端中输入sudo apt get update 如果在这一步出现错误 显示暂时不能解析域名的情况 可能是DNS服务器地址需要设置 可执行下列步骤
  • macOS上WebM转MP4文件

    目录 编辑 提出程序要求 安装Homebrew和ffmpeg的步骤 方法 原代码以下 原代码以上 注意 提出程序要求 在macOS上用Script Editor编写一个程序 使用ffmpeg命令来把WebM转换成MP4文件 说明 ffmpe
  • 纯CSS实现呼吸灯&文字&毛玻璃效果

    闲来无事 下一步在平时中应该考虑如何让页面动起来 增加视觉效果 说一说呼吸灯效果吧 我觉得可以用到 就一个brightness滤镜 用动画动起来 文字效果 在页面中系统名称处可以使用 让页面看起来更有活力一点 CSS真是今非昔比了 唉 水一
  • 基于阿里云的maven配置settings.xml

  • 解读升压电路(BOOST)与降压电路(BUCK)

    1 BUCK和BOOST电路详解 541板哥的博客 CSDN博客 buck电路和boost电路 2 升压电路 BOOST 与降压电路 BUCK FFT变换的博客 CSDN博客 buckboost升降压电路原理 3 BUCK BOOST电路原
  • C# replace替换用法

    1 在后台vs使用 content content Replace 545 666 把545替换为666 content content Replace r n 数据显示没有回车换行时 可以使用换行 2在html里使用 content co
  • 数据挖掘的之matplotlib

    数据挖掘的之matplotlib 文章目录 数据挖掘的之matplotlib 什么是Matplotlib 画二维图表的python库 2 1 3 实现一个简单的Matplotlib画图 完善原始折线图2 图像层 2 2 4 多个坐标系显示
  • web.xml 中配置元素错误提示 The content of element type “web-app“ must match “(icon?,display- name?...

    配置xml xml 文件 IDE提示错误信息如下 The content of element type web app must match icon display name description distributable cont
  • 听伯克利博士给你讲解Llama 2的技术细节

    来源 图灵人工智能 文章翻译自 Llama 2 an incredible open LLM 原文作者 NATHAN LAMBERT Meta 近日发表了 Llama 2 的论文 而来自伯克利大学的人工智能专业博士Nathan Lamber

随机推荐

  • 集成电路模拟版图入门-版图基础学习笔记(五)

    第四部分 版图的艺术 模拟版图和数字版图的首要目标 首先考虑的三个问题 匹配 3 1 匹配中心思想 3 2 匹配问题 3 3 如何匹配 3 4 MOS管 3 5 电阻 3 6 电容 3 7 匹配规则 寄生效应 4 1 寄生的产生 4 2 寄
  • Unity 关于Plugins放入dll在IOS端运行异常的bug

    好久没写博客了 今天被一个问题困扰了好久 网上了查不到相应的解决方案 自行解决后才觉得还是写写博客吧 说不定能帮助别人少走弯路 首先说明我的运行环境 MAC系统版本号10 13 4 Unity版本号2018 1 0 解释下当前环境的问题 首
  • iOS App上架流程

    前言 作为一名IOS开发者 把开发出来的App上传到App Store是必须的 下面就来详细介绍下具体流程 1 打开苹果开发者中心 https developer apple com 打开后点击 Member Center 如果你的电脑没有
  • vue子组件的数据处理后竟然影响了父组件的数据,导致父级的数据也同步变更了的问题解决

    文章目录 问题描述 问题解决 问题描述 需要在子组件中处理来自父组件的数据 将父级的千分位去掉 转为纯数字 const originalData 16 33 17 1 1 14 23 21 19 76 40 16 37 052 50 2 3
  • ESP8266红外检测安全系统

    我们每个人都想知道不在家时 家中所发生的事情 这与安全性或天然气 火或水等关键要素有关 知道发生了什么事情的瞬间对于将最终损坏降至最低至关重要 我们将重点介绍PIR传感器 但是相同的原理也适用于其他传感器 例如湿度 气体或烟雾传感器 无源红
  • 知云翻译选中一段只能翻译出一句话

    解决办法 换个翻译引擎
  • Linux SPI 驱动实验

    目录 Linux 下SPI 驱动框架简介 SPI 主机驱动 SPI 设备驱动 SPI 设备和驱动匹配过程 I MX6U SPI 主机驱动分析 SPI 设备驱动编写流程 SPI 设备信息描述 SPI 设备数据收发处理流程 硬件原理图分析 试验
  • k8s中无法获取到nginx-ingress的客户端真实ip地址x-forwarded-for

    1 查看阿里云的nginx ingress配置文档https help aliyun com document detail 42205 html 容器K8s配置方案 如果您的服务部署在K8s上 K8s会将真实的客户端IP记录在X Orig
  • 学习 Python 之 Pygame 开发魂斗罗(十一)

    学习 Python 之 Pygame 开发魂斗罗 十一 继续编写魂斗罗 1 改写主类函数中的代码顺序 2 修改玩家初始化 3 显示玩家生命值 4 设置玩家碰到敌人死亡 5 设置敌人子弹击中玩家 6 修改updatePlayerPositio
  • JavaEE大作业---基于springboot+Mybatis-plus+jsp+docker部署的作业管理系统

    经过了一个学期的JavaEE课程的学习 我对spring框架有了更加深入的了解 对于作业管理系统也在不断地优化 在这里做一个总结 接下来我将从几个部分来介绍这个项目 项目功能性需求 MySql数据库中表的结构 项目中使用到的关键技术 项目整
  • 记一次阿里云盘扩容遇到的坑

    背景 生产环境使用了阿里云并且以mongo作为图片服务器 由于业务发展需要数据盘的400G的容量已经用到81 所以需要对磁盘做无损扩容操作 操作步骤 在控制台上扩容数据盘的磁盘空间 官方文档 https help aliyun com do
  • 100天精通Python(可视化篇)——第100天:Pyecharts绘制多种炫酷漏斗图参数说明+代码实战

    文章目录 专栏导读 一 漏斗图介绍 1 说明 2 应用场景 二 漏斗图类说明 1 导包 2 add函数 三 漏斗图实战 1 基础漏斗图 2 标签内漏斗图 3 百分比漏斗图 4 向上排序漏斗图 5 标准漏斗图 书籍推荐 专栏导读 本文已收录于
  • 发布vue 的npm包

    1 本地启动一个vue项目 2 在src文件下新建index js import xxx from components xxx vue export default xxx 3 在src文件夹同级新建index js xxx 代表你的模块
  • 在一款芯片中多个时钟域非常常见,跨时钟域检查至关重要。本篇记录的是CDC跨时钟域的基础概念。

    CDC Clock Domain Crossing 跨时钟域 在一款芯片中多个时钟域非常常见 跨时钟域检查至关重要 本篇记录的是CDC跨时钟域的基础概念 时钟域clock domain 以寄存器捕获的时钟来划分时钟域 单时钟域single
  • STL空间配置器allocator详解

    转自 https blog csdn net xy913741894 article details 66974004 stl六大组件简介 我们知道 stl有容器 空间配置器 适配器 迭代器 仿函数以及算法这6个组件 它们六者关系大概如下
  • Ubuntu 22报错:PAM unable to dlopen(pam_tally2.so)

    ubuntu 22安装好后 普通用户一直登录不上 查看 var log auth log发现报错 Aug 18 17 02 02 xx sshd 388903 PAM unable to dlopen pam tally2 so lib s
  • linux如何发送查收邮件的详解

    一 linux用户发送给linux中的其它用户 1 使用命令 yum install sendmail y安装sendmail软件 2 使用yum install mailx y安装 mailx软件 3 使用命令systemctl star
  • 新安装的kali-linux 2022.1无法与其他虚拟机之间互相ping同

    新安装了kali 然后发现虚拟机无法与其他虚拟机互相ping同 也无法被ping 首先虚拟机之间都是nat模式 所有此时要查看不能ping同的虚拟机之间是否在同一个网段 此时要查看你的主机中网络连接的VMnet8的网段 VMnet8为nat
  • 纯Asp实现微信支付

    微信支付的程序文件需要3个 1 生成二唯码供用户扫描的网页 2 支付回调URL 就是当用户扫描二唯码后 微信会调用这个回调用URL 3 微信支付异步通知回调地址 当用户在微信上确认支付后 接收微信支付异步通知 其中第 2 3 个文件需要在支
  • 什么是哈希函数

    什么是hash函数 哈希函数 Hash Function 也称为散列函数 给定一个输入x 它会算出相应的输出H x 哈希函数的主要特征是 输入x可以是任意长度的字符串 输出结果即H x 的长度是固定的 计算 H x 的过程是高效的 对于长度