哈希算法(Hash)

Posted 我是青柠呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希算法(Hash)相关的知识,希望对你有一定的参考价值。

本文从以下三个核心点展开:

1、哈希表查找

2、什么是哈希算法

3、哈希算法的应用

 

1、哈希表查找(散列表查找)

为了衔接之前的知识,我们从哈希表查找开始讲起。举个栗子,我们要在a[ ]数组中查找Key关键字的存储位置:

如果我们选择用顺序表查找的方法,那么我们需要进行挨个儿比较,换言之,就是从一端开始比较,直到找到或者全部计较完。因为在顺序表中的数据是随机存放的,所以我们查找Key的位置需要不断的通过迭代进行比较,直至全部比较完。

 

如果我们选择的是有序表查找,那么我们可以把a[ ]数组先进行排序,从大到小或者从小到大之后,我们可以用更高效率的二分查找法进行查找。那我们今天可以更高效率的查找方法——散列表查找,也就是哈希表查找。它不需要迭代不需要比较,而是通过查找关键字直接获取记录的存储位置。即:

记录存储位置=f(关键字)

 

这里我们把这种对应关系f称为散列函数,又称为哈希(Hash)函数。按照这种思想,采用散列技术记录存储在一块连续的存储空间中,这块连续存储空间成为散列表或哈希表(Hash table )

散列表的查找步骤:



举个栗子,用散列表查找法在学校里找人,找麦克斯韦要到物理实验室找,找居里夫人要到化学实验室找,找姚期智要到计算机实验室找,而找我则要到物联网1802班找.....  到这里我想你已经明白了

 

 

2、什么是哈希算法

首先要清楚一点的是,哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值(散列值)


一般来说满足这样的关系:f(data)=key,输入任意长度的data数据,经过哈希算法处理后输出一个定长的数据key。同时这个过程是不可逆的,无法由key逆推出data。如果是一个data数据集,经过哈希算法处理后得到key的数据集,然后将keys与原始数据进行一一映射就得到了一个哈希表。

 

哈希算法的特点有:
1、输入可以为任意大小的字符串;
2、产生固定大小的输出;
3、可以在合理的时间内算出输出值。


3、哈希算法的应用

哈希算法的应用非常非常多,最常见的有七个,分别是安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储。

3.1.区块链中的密码学(安全加密)

哈希算法是一种加密算法,它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。以比特币为例,来看一下哈希算法的具体应用:在比特币中,使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值(),就这样一个接一个的连接起来,形成一个哈希指针链表。(就写这个,其他的不想写了)




浅学《数据结构与算法》课外拓展阅读笔记,十五周共十篇,已经算完结了,非常感谢自己这三个月以来的坚持!


ColorC1Troupe

万     物     皆     可     递     归


以上是关于哈希算法(Hash)的主要内容,如果未能解决你的问题,请参考以下文章

python hash()和哈希算法

哈希算法(Hash算法)是什么及用途

哈希表与哈希(Hash)算法

哈希算法从原理到实战

[HASH]哈希算法综述

大话Java中的哈希(hash)结构