前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解码:哈希算法如何工作的示例

解码:哈希算法如何工作的示例

作者头像
随心助手
发布2019-10-15 12:00:07
1.1K0
发布2019-10-15 12:00:07
举报
文章被收录于专栏:nginx遇上redis

如果密码学是一个主体,它的哈希算法就是它的核心。如果加密是一辆汽车,它的哈希算法就是它的引擎。如果加密是一部电影,它的哈希算法就是明星。如果密码学是太阳系,它的哈希算法将是太阳。好吧,那可能太过分了,但你明白了,对吗?在我们得到散列算法的原因之前,为什么它在那里,以及它是如何工作的,重要的是要了解其螺栓和螺栓的位置。让我们从哈希开始吧。

什么是哈希?

让我们试着想象一下这里的假设情况。假设您要向某人发送消息/文件,绝对必须以完全相同的格式到达其预期的收件人。你会怎么做?一种选择是多次发送并验证它没有被篡改。但是,如果消息太长了怎么办?如果文件以千兆字节为单位怎么办?完全是荒谬的,不切实际的,而且坦率地说,无聊地验证每一封信,对吧?好吧,这就是哈希发挥作用的地方。

使用选择的散列算法,数据被压缩为固定大小。让我们通过一个例子来理解这一点。如果我们接受句子“驴子活很长时间”并将joaat哈希算法应用于它,我们将得到6e04f289。该值称为哈希值。

当您想要识别或比较文件或数据库时,哈希非常方便。与其比较原始形式的数据,计算机比较哈希值要容易得多。无论是存储密码,计算机图形还是SSL证书,哈希都能做到这一切。

从根本上说,散列是由两个截然不同的特征定义的 - 不可逆性和唯一性。不可逆性指出这样一个事实:一旦你对某些东西进行散列,就无法回头了。与加密和编码不同,您无法轻松解除消息/数据的散列。唯一的,因为对于两个不同的数据,没有两个哈希值是相同的。如果发现两个哈希值对于两个不同的数据是相同的,则称为“哈希冲突”,并且该算法变得无用。

(注意:我们在这里使用了joaat哈希算法,因为它简短易懂。现代算法要复杂得多,而且时间长。)

哈希函数:哈希算法的核心

“每个成功男人的背后,都有一位伟大的女人。” - 格劳乔·马克思

“在每个成功的哈希算法的背后,都有一个很好的哈希函数。” - 我们就是这样做的。

让我们把笑话放在一边,专注于问题的关键。哈希函数是一种数学函数,它将输入值转换为压缩数值 - 哈希值或哈希值。基本上,它是一个处理单元,它接收任意长度的数据并为您提供固定长度的输出 - 哈希值。

输出或散列的长度取决于散列算法。一般而言,最流行的散列算法或函数具有160到512位的散列长度。

现在,让我们继续讨论你一直在等待的部分。

什么是哈希算法?它是如何工作的?

正如我们所讨论的,散列函数位于散列算法的核心。但是,要获得预设长度的哈希值,首先需要将输入数据划分为固定大小的块。这是因为散列函数接收固定长度的数据。这些块称为“数据块”。这在下图中进行了说明。

数据块的大小因算法而异。但对于特定的算法,它仍然是相同的。例如,SHA-1仅以512位的块接收消息/数据。因此,如果消息完全是512位长度,则哈希函数仅运行一次(在SHA-1的情况下为80轮)。类似地,如果消息是1024位,则将其分成两个512位的块,并且哈希函数运行两次。但是,99%的时间,消息不会是512位的倍数。对于这种情况(几乎所有情况),使用称为填充的技术。使用填充技术,整个消息被分成固定大小的数据块。散列函数重复与数据块的数量一样多的次数。这就是它的完成方式:

如上所示,一次处理一个块。第一数据块的输出作为输入与第二数据块一起馈送。因此,第二个输出与第三个块一起输入,依此类推。因此,我们将最终输出作为所有块的组合值。如果在消息中的任何位置更改一位,则整个哈希值会更改。这被称为“雪崩效应”。

流行的哈希算法

(1)消息摘要(MD)算法

(2)安全散列算法(SHA)

(3)RACE Integrity Primitives评估消息摘要(RIPEMD)

(4)涡流

(5)RSA

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 nginx遇上redis 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档