1、什么Hash

在计算机科学中,hash是一种函数,该函数可以把任意长度的输入转换为固定长度的输出,输出的结果称为hash值,通常为一个字符串,对于特定的hash算法输出结果的长度总是一定的,例如,不管是输入内容是长如小说般的内容还是一个字母,MD5总会产生32为长度的hash值。
hash函数的特点:
对于特定的hash算法输出结果的长度总是一定的;
对于相同的输入内容不管执行多少次hash函数,总会得到相同的hash值;
对于输入字符串哪怕及其微小的变动也会引起输出结果巨大的变化;
哈希过程是单向的,即不能通过特定的函数从hash值恢复出原始数据。

2、常见的hash算法

有很多广泛使用的hash算法,例如MD5、SHA1、SHA224、SHA256、SHA512等,一般编程语言中都提供的了常见的hash算法,如在python中:

import hashlib
hash = hashlib.md5(“Dataspace”.encode(‘utf-8’))
print(hash.hexdigest())

将会输出:

e2d48e7bc4413d04a4dcb1fe32c877f6

3、常见hash算法的应用场景

3.1 hash与密码

如果一个系统在数据库中直接保存了用户名和密码明文,那么一旦用户信息表泄露,捕获到信息的人就能使用任意账号登录系统;此时如果用户信息表中密码字段保存的是用户密码的hash值,即使该密码泄露,拿到该密码的人也并不能使用它来登录系统,因此给密码进行hash处理,会在一定程度上增加用户的安全性,注意,这种安全性并不是绝对的,因为hash过程虽然是不可逆的,但却可以被破解,因为这个世界上早有人搜集了不计其数的明文以及对应的hash值,放在数据库中,并以网站的形式对外提供服务,如https://cmd5.com/。
对密码更为安全的处理形式将会另行展开论述。

3.2 对抗计算机病毒

当发布出去的计算机程序感染病毒时,执行该程序可能会引起一些严重的后果, 那么如何保证用户执行的程序是开发者“真正”发布的程序呢?使用hash算法就是起到防范病毒的作用。具体来说就是,当发布程序时,会以程序为输入使用hash算法得到一个hash值,然后将程序和该hash值一并分发给用户,用户以得到的程序作为输入,执行指定的hash算法,也会得到一个hash值,如果用户执行出来的hash值与程序发布者发布的hash值一致说明程序未被篡改。

关于hash(一):基本概念相关推荐

  1. Hash——哈希法概念、哈希函数构造方法、哈希冲突解决办法(重点讨论链地址法)

    声明:本篇博客根据回顾老师上课知识和书籍<数据结构--用C语言描述>(耿国华)整理得出,仅作知识回顾学习用. 1.哈希法 哈希法又称散列法.杂凑法.关键字地址计算法.相对应的表称为哈希表. ...

  2. 不会一致性hash算法,劝你简历别写搞过负载均衡

    这两天看到技术群里,有小伙伴在讨论一致性hash算法的问题,正愁没啥写的题目就来了,那就简单介绍下它的原理.下边我们以分布式缓存中经典场景举例,面试中也是经常提及的一些话题,看看什么是一致性hash算 ...

  3. 什么是一致性 Hash 算法

    数据分片 先让我们看一个例子吧 我们经常会用 Redis 做缓存,把一些数据放在上面,以减少数据的压力. 当数据量少,访问压力不大的时候,通常一台Redis就能搞定,为了高可用,弄个主从也就足够了: ...

  4. hash地址_到底什么是Hash?

    到底什么是hash hash算法的概念 Hash: 一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通 ...

  5. 分布式缓存 - hash环/一致性hash

    一 引言 当前memcached,redis这类分布式kv缓存已经非常普遍.我们知道memcached的分布式其实是一种"伪分布式",也就是它的服务器节点之间其实是无关联的,之间没 ...

  6. 一致性 Hash 算法原理总结

    一致性 Hash 算法是解决分布式缓存等问题的一种算法,本文介绍了一致性 Hash 算法的原理,并给出了一种实现和实际运用的案例: 一致性 Hash 算法背景 考虑这么一种场景: 我们有三台缓存服务器 ...

  7. 一文带你了解MySQL之Adaptive Hash Index

    前言 在InnoDB体系架构图的内存结构中,还有一块区域名为:Adaptive Hash Index,翻译成中文:自适应哈希索引,缩写:AHI,它是一个纯内存结构,我们今天就来了解它. 目录 一.My ...

  8. java hash取模,一致性hash算法及其java实现

    目录 背景 随着业务系统越来越大,我们需要对API的访问进行更多的缓存,使用Redis是一个很好的解决方案. 但是单台Redis性能不足够且迟早要走向集群的,那么怎么才能良好的利用Redis集群来进行 ...

  9. 一致性hash算法和redis集群动态数据存储

    记录:对一致性Hash算法,Java代码实现的深入研究链接地址: http://www.cnblogs.com/xrq730/p/5186728.html 全部来自: https://mp.weixi ...

  10. Redis 一致性hash、hash槽

    参考:又被微信问懵了! redis系列之--一致性hash算法_诸葛小猿-CSDN博客_redis一致性hash Redis缓存问题(缓存穿透.缓存击穿.缓存雪崩.hash一致性问题及数据倾斜问题)_ ...

最新文章

  1. java float 加法_JAVA 实现精确的加减乘除运算
  2. viewflipper动画切换屏幕
  3. 宏定义和Typedef区别?
  4. 【PhotoScan精品教程】任务三:生成密集点云、生成网格、生成DEM、生成DOM
  5. 安卓应用安全指南 5.6.1 密码学 示例代码
  6. (转) Linux(Centos7)yum安装最新mysql
  7. 只需三步即可将 Python 程序转换成 exe 文件
  8. 帮助机器人自由行走 思岚科技推出激光导航模块
  9. 新元宇宙奇科幻小说每周连载《地球人奇游天球记》第十回月亮之宴
  10. 万变不离其宗之反射原理篇
  11. Google的C++编程规范总结
  12. LearnOpenGL从入门到入魔(3):绘制纹理
  13. linux生成license,License生成秘钥
  14. apt-get安装问题:请尝试不指明软件包的名字来运行“apt-get -f install”
  15. [Java] 什么是IoC?什么是DI?它们的区别是什么?
  16. 2.格式化输出与输入
  17. 传感器检测技术及仪表笔记02第二章 检测系统的基本特性
  18. 四大名著之精选22句名言:经典即是永恒,蕴藏人生哲理
  19. CSS3实现背景色一半红一半白
  20. 高可用性、负载均衡的mysql集群解决方案(data+sql+mgm节点)

热门文章

  1. 网络受限是个什么东东?
  2. Java在线预览(word转html)--强势推荐
  3. 飞秋FeiQ2013特色功能列表
  4. WebGIS开发快速入门
  5. linux 如何清理垃圾文件,清理Linux系统垃圾文件操作方法图文步骤详解
  6. 如何助力鸿蒙发展,实话实说:华为以一已之力,能不能推动鸿蒙系统的发展 - 区块网...
  7. hadoop Safe mode is ON 的解决办法
  8. CE修改Eternium永恒之金【进阶篇】
  9. linux硬盘对拷 再生龙,使用Clonezilla(再生龙)克隆Linux系统
  10. mysql用户域账户登录_使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000...