彻底掌握哈希算法,不再似懂非懂!
一、介绍及原理
1.1 简介
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。比如Java字符串的hashCode()就是哈希算法,输出是固定的4字节(32位二进制数)int整数,以16进制(一位数表示为4位二进制)表示,因此表达为类似0x7a9d88e8这种八位数的形式,即32除以4等于8。当然不是所有输出都会带0x前缀,但是对我们看到输出的字符串有 e、a、f 等字母就应该自然而然地想到是十六进制。
最简单的哈希算法就是取模。
1.2 哈希算法特性
- 相同的输入一定得到相同的输出;
- 不同的输入大概率得到不同的输出。根据抽屉原理,输入数据存在无限可能,而输出有固定范围,因此一定会存在不同输入得到相同输出的情况,即哈希碰撞,碰撞越多,算法越不可靠;
- 输入数据(文件、字符串等)的细微变化能导致输出的巨大变化;
- 不可以根据输出值推导出输入值,只能暴力破解;
- 执行效率高,哪怕输入是长文本。
1.3 作用
哈希算法的目的就是为了验证原始数据是否被篡改。
1.4 常见哈希算法
- SHA1
- SHA2,一系列算法的统称,包括sha256等
- md5:现已不够安全
二、如何解决哈希碰撞?
2.1 链地址法
三、应用
3.1 比较文件是否安全、完整
不如在一些官网下载软件包,对应版本会有唯一一个哈希值,如下图:
3.2 安全加密
比如加密用户密码。
不要在数据库明文保存用户密码,防止内部人员或者黑客窃取。应该保存密码的hash值,同时为了避免彩虹库的碰撞,还应该给每个用户密码加不同的盐(防止密码相同用户因为一个用户密码被破解而同时遭殃),即保存 hash(password +salt)计算后的值。
比如 HTTPS、CA 证书
3.3 区块链
也可以归为安全领域,但是值得单独拿出来讲述。
3.4 其它
这里就可以展开脑洞啦。
比如涉及到版权问题,比如图片。根据文件内容的哈希值判断是否是相同文件,修改文件名称和时间没有用,即使该文件在不同计算机间拷贝,哈希值的计算是针对文件流,即文件内容。
比如上传大文件到百度网盘时,感觉是秒传。
比如上传大文件到服务端的断点续传(避免重复上传)。
参考链接:
- https://www.liaoxuefeng.com/wiki/1252599548343744/1304227729113121
- https://www.cnblogs.com/sunsky303/p/11865321.html
- https://juejin.im/post/6844904205312868366#heading-6
彻底掌握哈希算法,不再似懂非懂!相关推荐
- ELFhash - 优秀的字符串哈希算法
原 ELFhash - 优秀的字符串哈希算法 分类:算法杂论算法精讲数据结构 (1424) (2) 1.字符串哈希: 我们先从字符串哈希说起 在很多的情况下,我们有可能会获得大量的字符串,每个字符串 ...
- 哈希分布与一致性哈希算法简介
前言 在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了.相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由clien ...
- 基于哈希算法的web账户口令存储方法
web账户的口令不能直接明文存储,这样太不安全了,需要加密存储. 存储策略-- 基于安全哈希算法加密存储用户的口令 估计基于安全哈希算法的存储方式应该已经广泛使用了,不过奇怪的是网上难以找到相关应用的 ...
- 一文读懂哈希和一致性哈希算法
哈希 Hash 算法介绍 哈希算法也叫散列算法, 不过英文单词都是 Hash, 简单一句话概括, 就是可以把任意长度的输入信息通过算法变换成固定长度的输出信息, 输出信息也就是哈希值, 通常哈希值的格 ...
- 算法分析:Oracle 11g 中基于哈希算法对唯一值数(NDV)的估算
作者简介 黄玮(Fuyuncat) 资深 Oracle DBA,致力于数据库底层技术的研究,其作品获得广大同行的高度评价. 个人网站 www.HelloDBA.com 1 为什么引入新 NDV 算法 ...
- 16 张图解带你掌握一致性哈希算法
摘要:一致性哈希是什么,使用场景,解决了什么问题? 本文分享自华为云社区<16 张图解 | 一致性哈希算法>,作者:小林coding. 如何分配请求? 大多数网站背后肯定不是只有一台服务器 ...
- 哈希算法(哈希函数)的基本使用
哈希算法(哈希函数)的基本使用 什么是哈希? 哈希的原理和特点 数组与哈希表 哈希函数 哈希函数的冲突与碰撞 哈希算法 哈希的应用 什么是哈希? 如果我们需要誊抄一本新华字典,那么有什么方法呢?比如当 ...
- sha算法 哈希算法_SHA1哈希算法教程及其用法示例
sha算法 哈希算法 SHA1 is a hash algorithm that is created by the National Security Agency (NSA). SHA1 hash ...
- 服务器负载均衡算法之哈希算法
文章目录 1.一致性哈希算法的问题 2.哈希算法的应用场景 3.如何分配请求? 4.加权轮询算法解决负载均衡问题 5.哈希算法带来的问题 6.一致性哈希算法带来的问题 7.虚拟节点提高一致性哈希算法的 ...
最新文章
- robot简单功能测试脚本设计(例子)
- python 堆排序的两种实现
- X Window概述
- 按字段顺序加载或解析JSON对象
- led显示屏控制卡接线图解_Led显示屏出现花屏是什么原因
- git为私有仓库设置密码_真香!在局域网下行云流水般使用git
- kubenetes 1.4 修改kubelet启动参数修改方法
- 矩池云上安装MATLAB R2020a遇到的坑
- 使用CSS在文字前面加上图标。
- Flink Weekly | 每周社区动态更新(附5月活跃榜单)
- 最小生成树模板 加 例题分析 (最小生成树类型汇总)
- ios备忘录下载安卓版_IOS版+安卓版,全下载注册教程
- Truecrypt之死
- 微软高性能缓存AppFabric(二)使用
- 关闭apache自动目录列表功能的三种方法
- 给多说评论系统增加颜文字
- 网络中的代理(proxy)和NAT
- 刘天栋:开源是打破内卷的最好方式
- 李国杰披露AMD技术转让 只能看不能吃(全文版)
- linux 多个文件内容查找,Linux 根据一个文件内容查找另一个文件中的内容
热门文章
- 淘宝/天猫京东年货节任务自动助手,自动完成任务领取奖励
- python 大数据量绘图_Matplotlib绘图遇到时间刻度就犯难?现在,一次性告诉你四种方法...
- “平台经济”到“生态经济”
- 2021安徽卫生副高考试成绩查询,中国卫生人才网:2021年卫生资格考试成绩现可查询!...
- c语言函数课程思政元素,课程中思政元素的挖掘与学习——以“齐文化典籍导读”课为例...
- Vim修改vimrc一键编译运行后出现请按 ENTER 或其它命令继续
- 仿豌豆荚ViewPager下拉
- 深度学习在音乐信息检索(MIR)方向的应用介绍(下)
- android-连续播放多个视频,VideoView实现视频无缝连续播放
- 智能网联技术 英文_揭秘!智能网联汽车技术应用与发展趋势!