Questions tagged «hashing»

哈希函数是将任意长度的数据映射到固定长度的数据的任何算法。哈希函数返回的值称为哈希值,哈希码,哈希和,校验和或简称为哈希。摘自Wikipedia:http://en.wikipedia.org/wiki/Hash_function

11
哪种哈希算法最适合唯一性和速度?
哪种哈希算法最适合唯一性和速度?示例(良好)用法包括哈希字典。 我知道有SHA-256之类的东西,但是这些算法被设计为安全的,这通常意味着它们比不那么独特的算法要慢。我希望哈希算法的设计速度要快,但要保持相当独特以避免冲突。
1387 algorithms  hashing 

2
为什么这么多散列和加密的字符串以等号结尾?
我在C#和MSSQL中工作,并且正如您期望的那样,我将密码存储为盐值和哈希值。 当我查看存储在nvarchar列中的哈希(例如,开箱即用的aspnet成员资格提供程序)时。我一直很好奇为什么生成的Salt和Hash值总是以一个或两个等号结尾。 在使用加密算法时,我已经看到了类似的事情,这是巧合还是有原因?

8
为什么在提交(并再次在服务器上再次对其进行哈希处理)之前,客户端中几乎没有网页会在客户端中对密码进行哈希处理,以“防止”密码重用?
Internet上有许多站点需要登录信息,并且防止密码重用的唯一方法是“保证”密码在服务器上被散列,但这并不总是正确的。 因此,我想知道,在将密码发送到服务器之前,在客户端计算机(使用Javascript)中创建一个哈希密码的网页有多困难?从理论上讲,这不会提供任何额外的安全性,但是在实践中,这可以用来防止不会在服务器中哈希密码的“恶意站点”。


6
多次哈希密码是否更安全?
我读过几次书,存储密码时,对字符串进行“双散列”是一个很好的做法(例如,使用md5然后使用sha1,显然都使用了盐)。 我想第一个问题是,“这实际上正确吗?” 如果不是,那么请忽略此问题的其余部分:) 我问的原因是,从表面上看,我会说这是有道理的。但是,当我考虑它时,每次重新哈希(可能添加了一些东西)时,我所看到的就是最终“唯一性”的上限减小了……该界限与初始输入。 让我换一种说法:我们有x个字符串,这些字符串经过哈希处理后减少为y个可能的字符串。也就是说,第一组中有碰撞。现在从第二组返回到第三组,是否不可能发生同一件事(即,所有可能的“ y”字符串组中的冲突导致第三组出现相同的哈希)? 在我的脑海中,我看到的只是每个哈希函数调用的“漏斗”,将无限的可能性“漏斗”到有限的集合中,依此类推,但是显然每个调用都在它之前的有限集合上进行,给了我们一个设置不大于输入。 也许有一个例子可以解释我的漫步?取'hash_function_a',它将给'a'和'b'哈希值'1',并将给'c'和'd'哈希值'2'。使用此功能存储密码,即使密码为“ a”,我也可以使用密码“ b”。 取'hash_function_b',它将为'1'和'2'提供哈希值'3'。如果我将其用作“ hash_function_a”之后的“第二哈希”,那么即使密码为“ a”,我也可以使用“ b”,“ c”或“ d”。 最重要的是,我知道应该使用盐,但是它们并没有真正改变我们每次将“ x”输入映射到“小于x”输出的事实。我不认为 有人可以告诉我我在这里想念什么吗? 谢谢! 编辑:对于它的价值,我自己不做,我使用bcrypt。而且我并不真正担心它对于“黑客”的“耗尽周期”是否有用。我真的只是想知道从哈希冲突的角度来看,该过程是否会降低“安全性”。
43 hashing 

3
我正在尝试了解哈希表-有人可以向我解释清楚吗?
我想了解php中哈希表的正确用法和实现(对不起)。 我读过某个地方,没有经验的程序员创建了一个哈希表,然后对其进行遍历。现在,我明白了为什么这是错误的,但是我还没有完全了解我的理解是否正确(如果您知道我的意思)。 因此,有人可以向我解释如何在php中实现哈希表(大概是一个关联数组),也许更重要的是,如何“使用哈希”访问值以及这实际上意味着什么?
25 php  hashing 

4
为什么Git .git / objects /文件夹又细分为许多SHA前缀文件夹?
Git在内部将对象(斑点,树)存储在.git/objects/文件夹中。每个对象都可以由从对象内容计算得出的SHA1哈希引用。 但是,对象并不.git/objects/直接存储在文件夹中。而是,每个对象都存储在一个文件夹中,该文件夹以其SHA1哈希的前缀开头。因此带有哈希值的对象b7e23ec29af22b0b4e41da31e868d57226121c84将存储在.git/objects/b7/e23ec29af22b0b4e41da31e868d57226121c84 为什么Git用这种方式细分其对象存储? 我可以找到的资源(例如git-scm 上有关Git内部的页面)仅说明了方法,而不是原因。

6
是什么使哈希算法“安全”?
阅读了这个有趣的问题之后,我觉得我对如果需要使用哪种不安全的哈希算法有了一个很好的了解,但不知道为什么我可能会改用安全算法。 那有什么区别呢?输出不只是代表散列对象的随机数吗?是什么使某些哈希算法安全?
19 security  hashing 

6
如何用近似相等实现浮点哈希
假设我们有以下Python类(Java中存在的问题与equals和相同hashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees degrees开尔文的温度在哪里?现在,我想实现平等的测试和哈希为Temperature的方式, 比较浮点数到ε差,而不是直接相等测试, 并履行a == b隐含的合同hash(a) == hash(b)。 def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? Python文档讨论了一些关于确保数字哈希hash(2) == hash(2.0)的问题,但这并不是完全相同的问题。 我是否在正确的轨道上?如果是这样,在这种情况下实现散列的标准方法是什么? 更新:现在我知道这种浮点数相等性测试消除了==和的可传递性equals。但是,如何将其与浮动的“常识”一起使用,不应该直接进行比较?如果通过比较浮点数实现相等运算符,则静态分析工具会抱怨。他们这样做正确吗?

6
如何向用户保证网站和密码的安全[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 在可靠的网站上,我总是看到诸如“所有数据都已加密”或“使用128位加密对所有密码进行加密”之类的声明。但是,我从未遇到过诸如“所有密码都经过哈希处理”的声明。 在我的网站上,将SHA-512(最有可能)使用带有随机盐的哈希后,将所有用户密码存储在数据库中。我想添加一个摘要,以确保用户的密码是安全的,因此不会阻止他们使用我的网站,因为它需要密码。我希望用户感到安全,但是我认为并不是每个人都知道哈希是什么。 我的问题:可以提供一条消息,说“所有密码都是加密且安全的”吗,因为我认为普通用户不会知道哈希和加密之间的区别,并且更可能会因为看到了而感到安全舒适词“加密”?还是我应该提供替代消息? 附带一提,我是加密和密码哈希的新手,我想知道在我启动网站时现在是否足够安全。我不想告诉用户它是否安全。任何信息将不胜感激。谢谢。

3
可伸缩的布隆过滤器如何工作?
我正在阅读可伸缩的bloom过滤器,但无法理解每次组成的bloom过滤器是如何填充的,都添加了一个更大尺寸的新bloom过滤器。 不能查找最初创建的过滤器中有助于设置位的元素。我可能对此理解不正确? 我确实了解基本的布隆过滤器。但是,我无法绕过动态Bloom过滤器。

6
盐哈希值应该从哪里来?
当将盐值添加到哈希值中(例如无法以纯文本形式存储的密码)时,获得盐值的最佳位置是什么?对于上下文,让我们假设这是网页登录时的密码。
12 security  hashing 


3
是否可以在不使用%运算符的情况下实现分布良好的哈希表?
我希望在C#中实现一个快速,分布均匀的哈希表。我在选择需要任意哈希码并“约束”它的哈希约束函数时遇到麻烦,因此可以将其用于索引存储桶。到目前为止,有两种选择: 一方面,您可以确保存储桶中始终有素数个元素,而要限制哈希,您只需对存储桶数进行模运算即可。实际上,这就是.NET词典所做的。这种方法的问题在于,与其他操作相比,使用%的速度非常慢。如果您查看Agner Fog指令表,idiv(这是为%生成的汇编代码)对于较新的Intel处理器,其指令等待时间约为25个周期。与此相比,大约3 mul或1逐位OPS像and,or或xor。 另一方面,您可以使存储桶的数量始终为2的幂。您仍将必须计算哈希的模数,因此您不必尝试在数组外部进行索引,但这一次的开销较小。由于对于2的幂% N是& (N - 1),约束被减少到仅需要1-2个周期的屏蔽操作。这是由Google的sparsehashash完成的。缺点是我们指望用户提供良好的哈希值;屏蔽哈希基本上会切断一部分哈希,因此我们不再考虑哈希的所有位。如果用户的哈希值分布不均匀,例如仅填充了较高的位或较低的位始终相同,则此方法的冲突率就会高得多。 我正在寻找一种我可以使用的兼具两全其美的算法:它考虑了哈希的所有位,并且比使用%还要快。它不一定必须是模数,而是一定要保证在一定范围内0..N-1(其中N是铲斗的长度)并且在所有插槽中具有均匀的分布。是否存在这样的算法? 感谢您的帮助。

2
是否可以通过使用二进制搜索树进行单独链接来加快哈希表的速度?
我想使用二进制搜索树实现哈希表,以减少从O(n)(使用链表)到O(log n)(使用BST)的单独链接过程中的搜索复杂性。可以这样做,如果可以,怎么办?如果解决方案是逐步实施的,则逻辑将更容易理解。 我想减少哈希表中的“搜索”时间(使用单独的链接进行构建),但同时我不想增加插入时间。对于我的项目,我无法更改哈希函数以减少冲突。但是由于可伸缩性,冲突正在发生。我试图找到一种解决方法,以便在发生冲突的情况下以某种方式使用最佳访问并插入时间...即管理事物的当前状态,而不是重构整个算法。如果没有成功,则必须进行重组。有什么想法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.