1. 哈希函数

哈希函数是指一种能够讲任意数据转换为固定长度编码的一种函数,因为不同数据得到的哈希值可能相同,因此哈希过程一般是不可逆的,哈希函数可以应用于密码加密,哈希存储等方面。
好的哈西函数应该具备以下特点:

  1. 相同的数据得到的哈希值唯一
  2. 通过哈希值无法通过反向推导得到源数据
  3. 源数据发生微小改变,得到的哈希值完全不同,
  4. 长的字符也能快速的计算出哈希值
  5. 要尽量避免冲突(不同的数据得到的编码要尽量不同)

2. 哈希加密算法

比如对用户密码的加密,如果使用明文来存储用户密码,那么管理员很容易就能在后台获取用户的密码并登录系统,如果通过哈希函数进行加密,那么管理员在后台只能看到通过哈希函数计算得到的哈希值,并且由于哈希函数不可逆的特性,管理员无法通过哈希函数得到用户密码的明文,从而对用户密码进行加密。

当然,用户一般不会设定太过于复杂的密码,因此黑客可以穷举常用的密码组合并计算相应的哈希值,然后和用户的哈希值进行一一比对,从而获取密码明文;当然实际密码加密过程往往更加复杂,也更难被破解,这里不展开讲。

3. 哈希存储

哈希存储用一句话概括就是:将每个数据通过哈希函数编码成一个二进制编码,然后将这个二进制编码作为地址来保存这个数据

顺序表和链表在查找数据时,都需要从列表的第一个元素开始进行比对,直到检索到目标元素或者检索不到;而哈希存储可以根据源数据直接计算出数据的存储的地址,根据地址直接修改删除或校验数据即可,节省了数据比对的时间。

哈希表适用于那种查找性能要求高,数据元素之间无逻辑关系要求的情况。例如做文件校验或数字签名。当然还有快速查询功能的实现。

3.1 优点

  1. 哈希存储在数据的查找、删除、修改方面有较高的效率,可以在O(1)内遍历元素;

3.2 缺点

  1. 哈希是以 key-value的形式存储数据的,因此数据之间没有顺序,无法通过下标访问数据
  2. 占的空间大,牺牲空间换取了效率
  3. 当哈希表接近装满的状态时,性能下降得非常严重;因为当哈西表空间不足时需要执行扩容操作且扩容操作非常耗时。例如哈希表的长度是100,现在有第101个数要插入,这时,不仅哈希表的长度可能要扩展到150,且扩展之后所有的数都需要重新rehash。因此在设计哈希表时最好能够提前预知数据量的大小。

4. 哈希函数的其他应用

哈希函数的其他用用还包括: 数据校验、版权校验、大文件分块校验、负载均衡、服务器缩容、服务器扩容、虚拟节点,具体的介绍请参考此文章->什么是 hash? - 腾讯技术工程的回答 - 知乎

全面理解哈希函数及其应用相关推荐

  1. mysql 自定义哈希函数_C++ STL无序容器自定义哈希函数和比较规则(超级详细)...

    前面在讲解 unordered_map.unordered_multimap.unordered_set 以及 unordered_multiset 这 4 种无序关联式容器(哈希容器)时,遗留过一个 ...

  2. 5个emoji表情包,让你秒懂哈希函数!

    作者 | Patrick Woodhead 译者 | Shawn 责编 | Aholiab 区块链的发展史,实质上是开发者与哈希函数之间长达十年的情史. 事实上,如果你理解哈希函数,那么理解区块链的挖 ...

  3. 【哈希】关于哈希表和哈希函数的理解与应用

    0.概述 哈希,或者说散列,在教科书上写的都比较详细,通常包括的内容有散列的方法,散列冲突的解决等.本文暂且不表这些基础知识,更多的重点在于哈希的一些应用和题目,对于哈希表.哈希函数从来没有学习过或者 ...

  4. Hash+哈希+哈希函数

    Hash+哈希+哈希函数 hash == 散列 == 哈希 是一种有损压缩技术 是一种数字指纹技术 哈希是一种加密算法 哈希函数(Hash Function),也称为散列函数或杂凑函数.哈希函数是一个 ...

  5. php 整数转换为32 位,PHP哈希函数返回一个整数(32位int)(PHP hashing function that returns an integer (32bit int))...

    PHP哈希函数返回一个整数(32位int)(PHP hashing function that returns an integer (32bit int)) 目标是使用INT(不是BIGINT或ME ...

  6. python 密码学计算_python 密码学示例——理解哈希(Hash)算法

    Hash 是密码学安全性的基石,它引入了单向函数(one-way function)和指纹(fingerprint)的概念.即: 对于任意输入,都可以产生相同的.唯一的输出值 输出值中不包含输入值的任 ...

  7. 哈希表 哈希函数 时间_您需要了解的哈希函数

    哈希表 哈希函数 时间 安全从业人员的功能表中有一个工具可以帮助每个人理解,无论他们对计算机进行什么操作:加密哈希函数. 这听起来听起来像是神秘的,技术性的,甚至可能很无聊,但是我对什么是哈希以及它们 ...

  8. 哈希算法(哈希函数)的基本使用

    哈希算法(哈希函数)的基本使用 什么是哈希? 哈希的原理和特点 数组与哈希表 哈希函数 哈希函数的冲突与碰撞 哈希算法 哈希的应用 什么是哈希? 如果我们需要誊抄一本新华字典,那么有什么方法呢?比如当 ...

  9. 里奥老师乾坤大挪移—哈希表与哈希函数专题1

    首先还是要先感谢左神 11.10.基础提升 哈希函数与哈希表等 1.要想掌握这么经典且复杂的问题,祭出埃隆马斯克的第一性原理+乾坤大挪移:表就是映射.函数就是映射. 2.说到哈希表,实在是太经典的数据 ...

最新文章

  1. JDK8:使用Optional进行变量判空、集合遍历
  2. 6425C-Lab11 配置DNS
  3. Navicat Premium
  4. 利用Lombok编写优雅的spring依赖注入代码,去掉繁人的@Autowired
  5. 小程序使用css变量,小程序使用css变量实现“换肤”方案
  6. 红帽yum安装httpd出现错误(This system is not registered to Red Hat Subscription Management. You can use subs)
  7. 使用Struts2和jQuery EasyUI实现简单CRUD系统(五)——jsp,json,EasyUI的结合
  8. 8.企业安全建设入门(基于开源软件打造企业网络安全) --- 态势感知系统建设
  9. 110. PHP 读取 ini ,ftp 上传
  10. 事务Transaction 那点事儿
  11. bochs上网镜像怎么上网_bochs win7镜像可上网版
  12. 腾讯技术分享实录:游戏后台开发九问
  13. php圆周长怎么求,圆的周长怎么求 公式是什么
  14. html圆圈里面问号,UTF-8编码的html页面显示-(问号)而不是字符
  15. mininet-wifi安装openflow13
  16. 2345好压去热点广告
  17. Jquery 回到顶部
  18. Advanced Zip Password Recovery下载
  19. Zotero使用指南04:群组功能
  20. 物联网下的RFID门禁,图书防盗新变革

热门文章

  1. 从未提交读—MVCC机制—Next-Key Lock,各种隔离级别及其解决对应问题的原理
  2. Android:异步处理之Handler+Thread 入门应用
  3. 【计网】计网软件编程——EthernetARP
  4. 【分享】ROM厂商刷机工具合集
  5. SharePoint 2016 开发教程-杨建宇-专题视频课程
  6. 用C语言实现发红包的软件算法
  7. 用计算机求平均数怎么做,3. 利用计算器求平均数
  8. 对数几率回归python代码
  9. D3DX库的使用D3DX初始化
  10. 关于validate验证框架的学习