首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD5哈希背后的原因?

MD5哈希背后的原因?
EN

Stack Overflow用户
提问于 2015-07-05 19:43:31
回答 1查看 79关注 0票数 0

我有时看到并建议将字符串和关联数组键存储为MD5哈希值。现在,我已经从麻省理工学院OCW 6.046j学到了哈希,它似乎更像是一种以高效格式存储数据以便快速搜索和防止人们取回原始数据的方案。但是,支持关联数组/字典的语言不是在内部做到这一点吗?MD5哈希提供的额外优势是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 19:52:54

大多数语言可能在内部支持这一点,例如请参阅Java的哈希码(),它是在HashMap中存储密钥时使用的

返回对象的哈希代码值。哈希表(如HashMap提供的哈希表)支持此方法。

但在某些情况下,你想自己去做。

场景1-在数据库中使用密钥:

假设您有一个大型的no-sql-ish数据库,其中包含字母和这些字母的元数据。您希望能够在不进行搜索的情况下快速找到信件的元数据。你的索引是什么?

一种选择是使用与信函内容无关的运行索引,但在找到文档的元数据之前,必须搜索数据库。另一种选择是为由它的前缀组成的文档创建一个签名(这只是许多文档中的一个例子),但是一些文档可能共享这个属性(“亲爱的约翰")。

那么,考虑到整个文档如何?在这里,您可以使用md5作为文档的行键。

在这种情况下,您依赖于拥有无碰撞,而支持这一假设的论点通常会提到您遇到疯狂大猩猩的可能性更大(通常)。安全哈希算法族产生的冲突甚至更少。

我提到这一点,因为数据库通常不会开箱即用(frameworks .)。

场景2-用于密码存储的单向散列:

注意:-这可能不再适用于md5,但它适用于-family变体。

在这种情况下,您希望将密码存储在数据库上,但如果数据库受到破坏,则存储纯文本密码可能会有缺陷(用户经常跨站点共享密码),也可能导致其他站点上的帐户受损。这里哈希的用法是存储散列密码,当用户尝试登录时,您只比较哈希,而不是密码本身。这样您就不需要在本地存储密码了,破解它要困难得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31234301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档