Tag: 哈希

我如何在iOS中计算SHA-2(理想的SHA 256或SHA 512)散列?

安全服务API似乎不允许我直接计算散列。 有很多公共领域和宽松许可的版本可用,但我宁愿使用系统库实现,如果可能的话。 数据可以通过NSData或普通指针访问。 散列的encryption强度对我很重要。 SHA-256是最小可接受的散列大小。

Java使用什么散列函数来实现Hashtable类?

从CLRS这本书(“algorithm简介”)中,有几个哈希函数,比如mod,multiply等。 Java使用什么散列函数将键映射到插槽? 我已经看到这里有一个问题, 在Java语言中使用哈希函数 。 但是这个问题没有回答,我想这个问题的答案是错误的。 它说,hashCode()让你做你自己的Hashtable散列函数,但我认为这是错误的。 hashCode()返回的整数是Hashtble的真正键,然后Hashtable使用散列函数来散列hashCode()。 这个答案意味着Java给了你一个给Hashtable一个哈希函数的机会,但不是,这是错误的。 hashCode()提供了真正的密钥,而不是散列函数。 那么Java使用的哈希函数究竟是什么呢?

yii CPasswordHelper:hashPassword和verifyPassword

我想我在这里错过了一些关键的东西。 在CPasswordHelper::hashPassword函数中,我们有行: $salt=self::generateSalt($cost); $hash=crypt($password,$salt); return $hash; 在CPasswordHelper::verifyPassword有这样一行: $test=crypt($password,$hash); return self::same($test, $hash); 那盐呢? 就我的理解,它甚至不存在,但它没有任何意义,所以我猜我完全不了解它。

JavaScript对象中关键查找的性能

我刚刚阅读这个问题: 是否有像JavaScript的JavaScript字典? 其中一个答案是,你可以使用Python对象等JavaScript对象。 真的吗? 对象中的关键字查询的性能如何? 是O(1)吗? 是恒定时间(哈希)添加一个关键的对象?

在C#中用密码保存DB的MD5哈希

你可以给我build议一些简单的algorithm,用MD5散列用户密码,但用盐来提高可靠性。 现在我有这个: private static string GenerateHash(string value) { var data = System.Text.Encoding.ASCII.GetBytes(value); data = System.Security.Cryptography.MD5.Create().ComputeHash(data); return Convert.ToBase64String(data); }

有可能获得相同的SHA1哈希?

给定两个不同的stringS1和S2(S1!= S2)有可能: SHA1(S1) == SHA1(S2) 是真的? 如果是 – 以什么概率? 如果不是 – 为什么不呢? inputstring的长度是否有上限,获得重复的概率是0? OR是SHA1的计算(因此重复的概率)独立于string的长度? 我试图实现的目标是哈希一些敏感的IDstring(可能与父ID一样的其他字段连接在一起),以便我可以使用哈希值作为一个ID(例如在数据库中)。 例: Resource ID: X123 Parent ID: P123 我不想公开我的资源标识的性质,让客户端看到“X123-P123”。 相反,我想创build一个新的列哈希(“X123-P123”),假设它是AAAZZZ。 然后客户端可以请求具有AAAZZZ的资源,而不知道我的内部ID等。

内置的python hash()函数

Windows XP,Python 2.5: hash('http://stackoverflow.com') Result: 1934711907 Google App Engine( http://shell.appspot.com/ ): hash('http://stackoverflow.com') Result: -5768830964305142685 这是为什么? 我怎样才能有一个哈希函数,这将使我在不同的平台(Windows,Linux,Mac)相同的结果?

如何在Ruby中迭代散列?

我有这样的哈希: { 1=>["a", "b"], 2=>["c"], 3=>["a", "d", "f", "g"], 4=>["q"] } 我如何迭代它以获得像这样的输出: 1—– a b 2—– c 3—– ad f g

可拆分,不可变

从最近的SO问题(请参阅在Python中创build一个由列表索引的字典 ),我意识到我可能对python中的可哈希和不可变对象的含义有错误的概念。 可行性在实践中意味着什么? 可哈希和不可变的关系是什么? 有可变的对象是可哈希或不可变的不可哈代对象?

最佳做法:腌制和胡椒粉密码?

我遇到了一个讨论,在这个讨论中,我了解到我所做的事情实际上并不是叮叮当当的密码,而是从此开始使用以下function: hash_function($salt.hash_function($pepper.$password)) [multiple iterations] 忽略select的散列algorithm(我希望这是一个盐和辣椒的讨论,而不是具体的algorithm,但我使用的是一个安全的),这是一个安全的select,还是应该做一些不同的? 对于那些不熟悉的条款: salt是随机生成的值,通常与数据库中的string一起存储,旨在使不可能使用散列表来破解密码。 由于每个密码都有自己的盐,所以他们都必须单独被强制性的破解。 然而,由于盐与密码散列存储在数据库中,数据库的妥协意味着两者都将丢失。 胡椒是一个站点范围的静态值,与数据库分开存储(通常在应用程序的源代码中硬编码),这是为了保密。 它的使用是为了妥协的数据库不会导致整个应用程序的密码表是暴躁的。 有什么我失踪,并腌制和胡椒我的密码保护我的用户的安全的最佳select? 这样做有没有潜在的安全缺陷? 注意:为了讨论的目的,假定应用程序和数据库存储在不同的机器上,不要共享密码等,因此违反数据库服务器并不意味着违反应用程序服务器。