草庐IT

开散列

全部标签

python - 使用盐在 SHA512 中进行散列? - Python

我一直在查看hashlib文档,但没有发现任何关于在散列数据时使用salt的内容。帮助会很大。 最佳答案 Samir的回答是正确的,但有些神秘。基本上,盐只是随机派生的数据位,您可以在数据前加前缀或后缀,以显着增加字典攻击散列值的复杂性。因此,给定盐s和数据d您只需执行以下操作即可生成数据的盐渍散列:importhashlibhashlib.sha512(s+d).hexdigest()查看wikipediaarticle了解更多 关于python-使用盐在SHA512中进行散列?-Py

python - 如何使对象正确可散列?

这是我的代码:classHero:def__init__(self,name,age):self.name=nameself.age=agedef__str__(self):returnself.name+str(self.age)def__hash__(self):print(hash(str(self)))returnhash(str(self))heroes=set()heroes.add(Hero('ZinaPortnova',16))#getshash-8926039986155829407print(len(heroes))#gets1heroes.add(Hero('La

python - 可散列的,不可变的

从最近的一个SO问题(参见Createadictionaryinpythonwhichisindexedbylists)中,我意识到我可能对python中可散列和不可变对象(immutable对象)的含义有一个错误的概念。hashable在实践中是什么意思?hashable和immmutable是什么关系?是否存在可散列的可变对象或不可散列的不可变对象(immutable对象)? 最佳答案 Hashing是将一些大量数据以可重复的方式转换为更少量(通常是单个整数)的过程,以便可以在恒定时间内在表中查找它(O(1)),这对于高性能算法

java - 为什么对于大多数基于散列的结构,除了像 ThreadLocal 之类的结构,Java 的语言设计者更喜欢链接而不是开放寻址?

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。为了帮助澄清这个问题以便可以重新打开它,visitthehelpcenter.关闭10年前.我知道解决哈希冲突的开放寻址和链接之间的区别。Java中的大多数基于散列的基本数据结构,如HashSet、HashMap主要使用链接技术。我读到ThreadLocal实际上使用了探测方案。所以我想了解为什么在Java中没有那么多使用开放寻址?我的意思是很难使用该方案删除记录,因为您必须使用一些特殊处理来标记这些单元格。然而,开放寻址方案的内存要求似乎很低。编辑:我只是想了解这个设计

java - 非随机散列函数导致的应用程序漏洞

以下摘录来自article这解释了由于散列数据结构中使用的非随机散列函数而导致拒绝服务(DoS)攻击的可能性。[…]theconditioncanbeleveragedbyexploitingpredictablecollisionsintheunderlyinghashingalgorithms.为了验证它,我查看了Oracle提供的JavaHashMap的引用实现,确实找到了使用的静态哈希函数:staticinthash(inth){h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}另一个paper关于题目告诉:ATomcat6.0.32s

java - 散列如何有一个 o(1) 的搜索时间?

这个问题在这里已经有了答案:CanhashtablesreallybeO(1)?(9个回答)关闭5年前。当我们使用HashTable存储数据时,据说搜索需要o(1)时间。我很困惑,谁能解释一下? 最佳答案 嗯,这是一个小的谎言——它可能需要更长的时间,但通常不会。基本上,哈希表是一个包含所有要搜索的键的数组。数组中每个键的位置由散列函数确定,该函数可以是始终将相同输入映射到相同输出的任何函数。我们假设散列函数是O(1)。所以当我们在哈希表中插入一些东西时,我们使用哈希函数(我们称之为h)来找到放置它的位置,并把它放在那里。现在我们插

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

从书CLRS(《算法导论》)中,有几个散列函数,如mod、multiply等。Java使用什么散列函数将键映射到槽?我看到这里有一个问题HashingfunctionusedinJavaLanguage.但它没有回答问题,我认为该问题的标记答案是错误的。它说hashCode()可以让你为Hashtable做你自己的散列函数,但我认为它是错误的。hashCode()返回的整数是Hashtble的真正key,然后Hashtable使用散列函数对hashCode()进行散列。这个答案意味着Java给了你一个机会给Hashtable一个散列函数,但是不,这是错误的。hashCode()给出真正

java - 使用 Spring Security 3 散列和加盐密码

如何使用SpringSecurity3对密码进行哈希处理和加盐? 最佳答案 以编程方式,您可以按如下方式进行:在您的application-context.xml(在contextConfigLocation下的web.xml中定义)文件中定义bean(本示例使用md5)。然后Autowiring密码编码器:@AutowiredPasswordEncoderpasswordEncoder;在您的方法或任何您想要散列和加盐的地方。passwordEncoder.encodePassword("MyPasswordAsString","

mongodb - 在 MongoDB 中正确实现散列分片键

我有一个当前由内置“_id”(ObjectId)索引/查询的集合。我不想在这个键上分片,因为它是顺序的(以日期为前缀)。Mongo2.4的文档说我可以对这个键的哈希进行分片,这听起来很棒。像这样:sh.shardCollection("records.active",{_id:"hashed"})问题:我是否必须首先在事件集合上创建散列索引:db.active.ensureIndex({_id:"hashed"})或者这不是必需的吗?我不想在不必要的索引上浪费空间。相关问题:如果我确实使用ensureIndex({_id:"hashed"})创建了一个散列索引,我可以删除默认的“id”

mongodb - 什么是散列索引?

MongoDB2.4有一个新功能,我看到周围的每个人都在谈论,所以这是我的问题(对不起,如果它们很简单):MongoDB是否在不指定分片键的情况下管理它们?还是管理员选择key?是否存在出现Hostspot问题或磁盘IO滞后的风险,因为存在Hash一词,而hash是随机的? 最佳答案 这个想法是,您可以在要用作分片键的字段上创建一个散列索引,该分片键碰巧会产生不良的写入分布(例如,它单调增加并会在最近的条目上创建一个热点)。散列索引中存储的散列是128位md5散列的64位。目标是允许通过键的哈希值进行分片,而无需应用程序了解哈希机制