Hash是什么

小嘿 2020-06-03 17:42:13
QA

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射。

Hash,一般翻译做散列杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射 pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

Hash是什么

简介

Hash 算法可以将一个数据转换为一个标志,这个标志和源数据的每一个字节都有十分紧密的关系。Hash 算法还具有一个特点,就是很难找到逆向规律。

Hash 算法是一个广义的算法,也可以认为是一种思想,使用 Hash 算法可以提高存储空间的利用率,可以提高数据的查询效率,也可以做数字签名来保障数据传递的安全性。所以 Hash 算法被广泛地应用在互联网应用中。

Hash 算法也被称为散列算法,Hash 算法虽然被称为算法,但实际上它更像是一种思想。Hash 算法没有一个固定的公式,只要符合散列思想的算法都可以被称为是 Hash 算法。

基本概念

若结构中存在和关键字 K 相等的记录,则必定在 f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系 f 为散列函数(Hash function),按这个事先建立的表为散列表。

对不同的关键字可能得到同一散列地址,即 key1≠key2,而 f(key1)=f(key2),这种现象称碰撞。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数 H(key)和处理冲突的方法将一组关键字映射到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象” 作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表散列,所得的存储位置称散列地址

若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。

散列表

散列表是散列函数的一个主要应用,使用散列表能够快速的按照关键字查找数据记录。(注意:关键字不是像在加密中所使用的那样是秘密的,但它们都是用来“解锁”或者访问数据的。)例如,在英语字典中的关键字是英文单词,和它们相关的记录包含这些单词的定义。在这种情况下,散列函数必须把按照字母顺序排列的字符串映射到为散列表的内部数组所创建的索引上。

散列表散列函数的几乎不可能/不切实际的理想是把每个关键字映射到的索引上(参考散列),因为这样能够保证直接访问表中的每一个数据。

一个好的散列函数(包括大多数加密散列函数)具有均匀的真正随机输出,因而平均只需要一两次探测(依赖于装填因子)就能找到目标。同样重要的是,随机散列函数几乎不可能出现非常高的冲突率。但是,少量的可以估计的冲突在实际状况下是不可避免的(参考生日悖论)。

在很多情况下,heuristic 散列函数所产生的冲突比随机散列函数少的多。Heuristic 函数利用了相似关键字的相似性。例如,可以设计一个 heuristic 函数使得像 FILE0000.CHK,FILE0001.CHK,FILE0002.CHK,等等这样的文件名映射到表的连续指针上,也就是说这样的序列不会发生冲突。相比之下,对于一组好的关键字性能出色的随机散列函数,对于一组坏的关键字经常性能很差,这种坏的关键字会自然产生而不仅仅在攻击中才出现。性能不佳的散列函数表意味着查找操作会退化为费时的线性搜索。

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

扩展

MD5、SHA1 的破解

2004 年 8 月 17 日,在美国加州圣芭芭拉召开的国际密码大会上,山东大学王小云教授在国际会议上首次宣布了她及她的研究小组的研究成果——对 MD5、HAVAL-128、MD4 和 RIPEMD 四个著名密码算法的破译结果。次年二月宣布破解 SHA-1 密码。

命令描述

Linux 命令——hash

hash 命令用来显示、添加和清除哈希表。该命令的语法格式如下所示。

0个人收藏 收藏

评论交流

泪雪默认头像 请「登录」后参与评论
  1. 加载中..

相关推荐

  • 文件安全 file security

    电脑提示下载的文件未经验证有哪些解决方法

    电脑提示下载的文件未经验证可重新从官网下载文件;下载文件后不要立即打开,先使用杀毒软件扫描文件;检查文件哈希值与官方提供的哈希值是否一致;再启用浏览器的安全下载功能;还可调整系统安全设置,调整提醒等级;确信文件安全以管理员权限运行安装程序。
  • 加密算法 Encryption Algorithms

    加密算法是什么

    加密算法是数学规则,将数据转换为难以理解的形式,确保数据传输、存储和处理的安全。对称加密如AES快速但复杂,非对称如RSA安全但慢,哈希如SHA验证数据完整性。应用于网络通信、数据存储、身份验证和数字签名等领域,保障信息安全。
  • PostgreSQL 数据库

    PostgreSQL,号称世界上最先进的开源关系型数据库

    PostgreSQL是一个开源的关系型数据库管理系统,以其对SQL标准的高度兼容、卓越的并发处理能力、强大的功能集和扩展性而著称。它适合处理复杂查询和高并发需求,被广泛应用于各种规模的企业中。凭借其强大的社区支持和灵活性,PostgreSQL成为数据库开发者和DBA的优选。
  • Redis

    Redis,开源的高性能键值对数据库

    Redis是一款开源、基于内存的高性能键值对数据库,支持多种数据结构如字符串、列表、集合等。它以快速的读写速度和高并发处理能力著称,适用于缓存系统、会话存储、消息队列等多种场景。Redis的主要优势包括数据持久化、丰富的数据类型支持和良好的扩展性。特别适合需要快速、复杂数据处理的企业和应用。
  • Apache Mesos

    Apache Mesos,功能强大的开源集群管理系统

    Apache Mesos是一款高度灵活的开源集群管理工具,专为大规模复杂的数据中心和云环境设计。它通过资源抽象和隔离提高资源利用率,支持多租户和配额管理,并提供强大的容错能力。Mesos尤其适用于需要精细资源控制的大数据和科学计算场景,但其复杂性意味着有一定的学习门槛。
  • 删除重复文件 Delete duplicate files

    怎么查找并删除电脑上重复的文件

    删除电脑重复文件可以使用系统自带的查找功能,打开资源管理器,在地址栏输入“%temp%”,按回车打开重复文件文件夹,选择要删除的文件选删除即可;或者手动查找和删除;熟悉令行操作可以使用PowerShell查找重复文件;还可使用360卫士。