前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >哈希函数的理解

哈希函数的理解

作者头像
神奇的程序员
发布2022-04-10 09:08:22
6900
发布2022-04-10 09:08:22
举报

前言

什么是哈希函数?它能用来干嘛?本文将以图文的形式讲解上述问题,欢迎各位感兴趣的开发者阅读本文。

概念与作用

哈希函数可以把给定的数据转换成固定长度的无规律数值。转换后的无规律数值可以作为数据摘要应用于各种各样的场景。

图解示例

我们可以把哈希函数想象成搅拌机,如下图所示。

  • 将数据放进搅拌机里
  • 经过哈希函数计算后,搅拌机会输出固定长度的无规律数值。输出的无规律数值就是“哈希值”。哈希值虽然是数字,但多用十六进制来表示。
  • 计算机使用二进制管理所有数据,虽然哈希值是用十六进制表示的,但它也是数据,计算机在存储哈希值时,会通过计算将其转换为二进制进行管理。

哈希函数的特征

  • 哈希值的长度与输入数据的大小的无关
  • 输入相同数据,输出的哈希值也必定相同
  • 输入相似的数据,输出的哈希值必定不同。
  • 输入的数据完全不同,但输出的哈希值可能是相同的。虽然这种情况的出现概率较低,这种情况就叫做“哈希冲突”
  • 哈希值是不可逆的,通过哈希值不可能反向推算出原本的数据。

哈希函数的作用

哈希函数的算法中具有代表性的是「MD5」「SHA-1」「SHA-2」等,其中SHA-2是现在应用较为广泛的一个,而MD5和SHA-1存在安全隐患,不推荐使用。

不同算法计算方法不同,计算出来的哈希值也会有所不同。哈希函数的特征中有一条是输入的数据相同,输出的哈希值也必定相同,这个特征的前提是使用的是同一种算法。

根据哈希函数的特征,我们可以将其应用到「数据库密码的保存」

如果把密码直接保存到服务器,可能会被「第三者窃听」,因此要算出密码的哈希值,并只存储哈希值。当用户输入密码时,先算出该密码的哈希值,再把它和服务器中的哈希值进行比对。这样一来,就算保存的哈希值暴露了,鉴于哈希函数“哈希值不可逆”的特征,第三者也无法得知原本的密码。

就像这样,使用哈希函数可以更安全地实现基于密码的用户认证。

写在最后

  • 文中使用的图片源自《我的第一本算法书》,如若侵权,请评论区留言,作者立即删除相关图片。
  • 文中如有错误,欢迎在评论区指正
  • 本文首发于掘金,未经许可禁止转载💌
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 神奇的程序员 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概念与作用
  • 图解示例
  • 哈希函数的特征
  • 哈希函数的作用
  • 写在最后
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档