Questions tagged «hash»

哈希函数是任何定义明确的过程或数学函数,可以将大量数据转换为小的数据,通常是单个整数。对于用于标记社交媒体内容的主题标签的问题,请使用主题标签。对于有关URL和HTML锚点的问题,请使用片段标识符。对于有关Ruby的哈希类型的问题,请使用ruby-hash。

2
为什么“ 397”用于ReSharper GetHashCode覆盖?
像你们中的许多人一样,我使用ReSharper来加快开发过程。当您使用它覆盖类的相等性成员时,它为GetHashCode()生成的代码源如下: public override int GetHashCode() { unchecked { int result = (Key != null ? Key.GetHashCode() : 0); result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0); result = (result * 397) ^ ObjectId; return result; } } 当然,我那里有一些我自己的成员,但是我想知道为什么是397? 编辑:所以我的问题最好用这样的措辞,因为除了397质数以外,是否还有一些“特殊”的质数?

20
JavaScript中是否有某种哈希码函数?
基本上,我试图创建一个具有唯一对象的对象,即一个集合。我有一个绝妙的主意,就是仅将JavaScript对象与属性名称的对象一起使用。如, set[obj] = true; 在一定程度上这是可行的。它适用于字符串和数字,但是对于其他对象,它们似乎都“哈希”为相同的值并访问相同的属性。有什么方法可以为对象生成唯一的哈希值?字符串和数字是如何做到的,我可以覆盖相同的行为吗?
150 javascript  hash  set  hashcode 

7
SHA-1是否安全存储密码?
结论: SHA-1与任何其他对原像攻击的攻击一样安全,但是它易于计算,这意味着更容易进行暴力破解或字典攻击。(对于SHA-256之类的后继者也是如此。)根据情况的不同,散列函数的设计成本较高(例如bcrypt),可能是更好的选择。 有些人大声疾呼诸如“ SHA-1损坏”之类的言论,所以我试图理解这到底意味着什么。假设我有一个SHA-1密码哈希数据库,并且攻击者拥有最先进的SHA-1破坏算法,并且拥有100,000台机器的僵尸网络可以访问它。(对10万台家用计算机进行控制将意味着它们每秒可以执行约10 ^ 15次操作。)他们需要多少时间 找出任何一个用户的密码? 找出给定用户的密码? 找出所有用户的密码? 找到一种以用户身份登录的方法? 找到一种以特定用户身份登录的方法? 如果密码过大,该如何更改?加盐的方法(前缀,后缀或两者,或诸如xor-ing之类的更复杂的东西)是否重要? 经过谷歌搜索后,这是我目前的理解。如果我误解了一些内容,请纠正答案。 如果没有盐,彩虹攻击将立即找到所有密码(极长的密码除外)。 如果有足够长的随机盐,找出密码的最有效方法是蛮力攻击或字典攻击。碰撞和前映像攻击都无法帮助您找到实际的密码,因此,针对SHA-1的加密攻击没有帮助。甚至使用什么算法都没关系-甚至可以使用MD5或MD4,并且密码也一样安全(因为计算SHA-1散列的速度较慢,所以存在细微差别)。 为了评估“同样安全”的安全性,我们假设一次sha1运行需要1000次操作,并且密码包含大写,小写和数字(即60个字符)。这意味着攻击者每天可以测试10 15 * 60 * 60 * 24/1000〜= 10 17个潜在密码。对于蛮力攻击,这意味着要在3小时内测试所有密码,最多9个字符,一周最多测试10个字符,一年最多测试11个字符。(每个其他字符要花60倍的时间。)字典攻击的速度要快得多(即使攻击者只有一台计算机,也可以在数小时内将其删除),但只能找到弱密码。 要以用户身份登录,攻击者无需找出确切的密码;找到一个导致相同哈希值的字符串就足够了。这称为第一次原像攻击。据我所知,没有针对SHA-1的原像攻击。(A暴力破解攻击需要2点160的操作,这意味着我们的理论,攻击者需要10 30年,把它关闭。的理论可能性的限制是大约2个60操作,在该攻击将需要几年的时间。)有原像攻击反对SHA-1的简化版本(效果可忽略不计)(对于使用44步而不是80步的简化SHA-1,攻击时间从2160次操作减少到2157次)。有一些针对SHA-1的冲突攻击,这在理论上是可行的(我发现的最好的攻击时间从2 80降至2 52),但是对于密码哈希(即使不加盐)也没有用。 简而言之,使用SHA-1存储密码似乎非常安全。我错过了什么? 更新: Marcelo指出了一篇文章,其中提到了2 106次操作中的第二次原像攻击。(编辑:正如Thomas所解释的那样,此攻击是一种假想的构造,不适用于现实情况。)不过,我仍然看不到这对使用SHA-1作为关键派生函数的危险。通常有充分的理由认为碰撞攻击或第二原像攻击最终可以转变为第一原像攻击吗?
148 cryptography  hash  sha1 


4
最佳做法:添加密码?
我遇到了一个讨论,在该讨论中,我了解到我实际上在做的并不是给密码加盐,而是给它们添加了胡椒粉,从那时起,我就开始使用以下功能: hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 忽略选择的哈希算法(我希望这是关于盐和胡椒的讨论,而不是特定算法的讨论,但我使用的是安全算法),这是安全的选择还是我应该做一些不同的事情?对于那些不熟悉这些术语的人: 甲盐是通常存储与设计,使其不可能使用哈希表来破解密码的数据库中的字符串中的随机生成值。由于每个密码都有自己的特色,因此必须将所有密码单独强行破解。但是,由于盐与密码哈希一起存储在数据库中,因此数据库泄密意味着同时丢失两者。 甲胡椒是从中旨在是秘密的数据库(在应用程序的源代码通常硬编码)分开存储站点范围静态值。使用它是为了避免对数据库造成危害,不会导致整个应用程序的密码表都是蛮力的。 我有什么遗漏的东西吗?保护密码安全的最佳选择是保护我的用户的安全吗?这样做是否有潜在的安全缺陷? 注意:出于讨论目的,假设应用程序和数据库存储在单独的计算机上,不共享密码等,因此违反数据库服务器并不自动意味着违反了应用程序服务器。

9
为什么XOR是组合哈希的默认方法?
假设您有两个哈希H(A),H(B)并且想要将它们组合在一起。我读过,将两个散列组合在一起的一种好方法是XOR,例如XOR( H(A), H(B) )。 这些哈希函数准则在此简要地介绍了我找到的最佳解释: 对具有大致随机分布的两个数字进行异或运算会导致另一个仍具有大致随机分布*的数字,但是现在取决于这两个值。 ... *在要组合的两个数字的每一位,如果两位相等,则输出0,否则为1。换句话说,在50%的组合中,将输出1。因此,如果两个输入位各自有大约50-50的可能性为0或1,那么输出位也是如此。 您能解释为什么XOR应该是用于组合哈希函数(而不是OR或AND等)的默认操作的直觉和/或数学方法吗?

6
使用Sha256散列字符串
我尝试使用SHA256哈希字符串,我使用以下代码: using System; using System.Security.Cryptography; using System.Text; public class Hash { public static string getHashSha256(string text) { byte[] bytes = Encoding.Unicode.GetBytes(text); SHA256Managed hashstring = new SHA256Managed(); byte[] hash = hashstring.ComputeHash(bytes); string hashString = string.Empty; foreach (byte x in hash) { hashString += String.Format("{0:x2}", x); } return hashString; } } 但是,与我的朋友php和在线生成器(例如This …
141 c#  string  hash  sha256 

9
哈希密码和加密密码之间的区别
当前对该问题的最高投票指出: 另一个与安全性无关的安全性问题虽然完整,但完全无法解决哈希散列密码和加密密码之间的区别。最常见于程序员试图提供不安全的“提醒我密码”功能的代码中。 到底有什么区别?我总是给人以哈希是一种加密形式的印象。海报所指的不安全功能是什么?


9
MD5仍然足以唯一地识别文件吗?
考虑到MD5算法的所有突破和安全性问题等,MD5散列文件仍然被认为是一种足以唯一标识该文件的好方法吗?安全不是我主要关注的问题,而是唯一标识每个文件。 有什么想法吗?
139 hash  md5 

9
我应该选择哪个加密哈希函数?
.NET框架附带6种不同的哈希算法: MD5:16个字节(散列时间500MB:1462毫秒) SHA-1:20个字节(1644毫秒) SHA256:32个字节(5618毫秒) SHA3​​84:48个字节(3839毫秒) SHA512:64个字节(3820毫秒) RIPEMD:20个字节(7066 ms) 这些功能各自执行不同的功能。MD5是最快的,而RIPEMD是最慢的。 MD5的优点是适合内置的Guid类型。它是类型3 UUID的基础。SHA-1哈希是类型5 UUID的基础。这使得它们真正易于识别。 但是,MD5容易受到碰撞攻击,SHA-1也容易受到攻击,但程度较小。 在什么情况下应该使用哪种哈希算法? 我真的很想知道答案的具体问题是: MD5不值得信赖吗?在正常情况下,当您使用没有恶意意图的MD5算法并且任何第三方都没有恶意意图时,您会期望发生任何冲突(这意味着两个任意byte []会产生相同的哈希) RIPEMD比SHA1好多少?(如果更好),其计算速度要慢5倍,但哈希大小与SHA1相同。 在对文件名(或其他短字符串)进行哈希处理时,获得非恶意冲突的几率是多少?(例如,两个具有相同MD5哈希值的随机文件名)(带有MD5 / SHA1 / SHA2xx)通常,非恶意冲突的几率是多少? 这是我使用的基准: static void TimeAction(string description, int iterations, Action func) { var watch = new Stopwatch(); watch.Start(); for (int i = 0; i < iterations; i++) { func(); …

6
获取URL哈希位置,并在jQuery中使用它
我想在当前页面的URL中获取哈希值后的值,然后将其应用于新函数中。 该网址可能是 www.example.com/index.html#foo 我想将其与以下代码结合使用 $('ul#foo:first').show(); 我有点假设/希望有某种方法可以将其捕获,并将其转换为变量,然后在第二段代码中使用。


11
是否值得在客户端哈希密码
当我要放置一个登录系统时,我总是将给定密码的MD5与服务器端的users表中的值进行比较。 但是,我的一个朋友告诉我,网络软件可能会嗅到“清除”密码。 所以我的问题是:在客户端哈希密码是否是一个好主意?它比在服务器端对其进行哈希处理更好吗?


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.