【问题标题】:what is difference between crypto hash and hashtable hashes in python?python中的加密哈希和哈希表哈希有什么区别?
【发布时间】:2016-03-20 03:18:06
【问题描述】:
什么是加密哈希,有哪些算法?它与 python 中的普通哈希有何不同?如何确定使用哪个?
前:
加密哈希函数
你好--aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
地狱--44d634fa6b81353bc3ed424879ffd013501ade53
散列函数
哈希(“你好”)-1267296259
哈希(“地狱”)-1267296266
请帮帮我
【问题讨论】:
-
加密哈希似乎是用SHA-1算法生成的,而python内置hash()则正常。对于加密哈希,阅读更多here。但是,由于问题不完全(且具体)与算法有关,因此更适合 Cryptography SE
标签:
python
python-2.7
hash
cryptography
【解决方案1】:
加密哈希函数不同于哈希表哈希函数。一个主要区别是加密散列函数被设计为没有散列冲突弱点。在大多数情况下,它们被设计为更加安全和不可逆转。但是像 hash 这样的 Hashtable 哈希函数更快,旨在用于快速访问内存中的项目或比较项目等。
假设有两个不同的场景。如果要将密码存储在数据库中,则必须使用 pbkdf2 之类的东西,这样它更安全,生成速度也更慢,以防止暴力破解。但在另一种情况下,您只想拥有一组项目并检查该集合中是否存在项目。您可以简单地存储项目(例如类)的 32 位或 64 位散列,并快速比较散列而不是类。
例如对于字符串“hello”,计算和存储1267296259 要快得多,因为它是一个 32 位整数,计算和存储 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d 更安全且更慢。
附:一个很好的例子是here。