Tag: 哈希

检测两个图像在视觉上是否相同

有时两个图像文件在文件级别上可能会有所不同,但是人类会认为它们在感知上是相同的。 鉴于此,现在假设你有一个巨大的图像数据库,并且你想知道一个人是否会认为图像X是存在于数据库中的。 如果所有图像都具有敏感的散列/指纹,那么可以对图像X进行散列,并且查看它是否在数据库中是简单的事情。 我知道有关于这个问题的研究,还有一些algorithm存在,但是有没有工具,比如UNIX命令行工具或者我可以用来计算这样一个散列的库,而不用从头开始实现一些algorithm? 编辑:从findimagedupes相关代码,使用ImageMagick try $image->Sample("160×160!"); try $image->Modulate(saturation=>-100); try $image->Blur(radius=>3,sigma=>99); try $image->Normalize(); try $image->Equalize(); try $image->Sample("16×16"); try $image->Threshold(); try $image->Set(magick=>'mono'); ($blob) = $image->ImageToBlob(); 编辑: 警告! ImageMagick $ image对象似乎包含有关读入的图像文件的创build时间的信息。这意味着即使对于相同的图像,如果在不同的时间检索到的图像,blob也会不同。 为了确保指纹保持不变,使用$ image-> getImageSignature()作为最后一步。

如何理解这段代码片段中的两对括号?

此代码来自C ++底层 p.446: return hash<string>() (sd.isbn()); 我不明白带有两对括号的返回expression式。 本书前面没有类似的语法。

创build自己的MD5碰撞

我正在做关于MD5碰撞的演示,我想让人们知道碰撞的可能性有多大。 有两块文本散列到同一个东西,并解释在碰撞之前需要多less个[a-zA-Z]组合。 明显的答案是哈希每个可能的组合,直到命中两个哈希相同。 那么你怎么去编码呢。 作为一个快速的实验,我尝试了哈希[AZ]的5列的每一个组合,将其存储在.net哈希表中,并捕获冲突exception。 有两个问题 – 哈希表最终超时,我很确定我将需要很多字符。 显然这个数据结构太大,无法在内存中处理,所以现在我必须得到一个数据库。 这听起来像是一个很好的项目来testing蔚蓝 – 有点像这些家伙 。 任何人都可以指出我这样做的有效方法吗?

散列码的哈希码和相等

请在Hashset中澄清我的疑问。 考虑下面的代码, class Person { String name; Person(String n) { name=n; } public String getName() { return name; } @Override public boolean equals(Object arg0) { System.out.println("in equals"); Person obj=(Person)arg0; System.out.println("1st "+getName()); System.out.println("2nd "+obj.getName()); if(this.getName().equals(obj.getName())) { return true; } return false; } @Override public int hashCode() { System.out.println("in hash code"); System.out.println(" value is "+Integer.valueOf(name.charAt(0))); return Integer.valueOf(name.charAt(0)); […]

用JavaScriptparsingURL哈希/片段标识符

寻找一种方法来将密钥对从URL的散列/片段中parsing到带有JavaScript / JQuery的对象/关联数组中

如何生成一个独特的散列码在Android的stringinput…?

我想为Android中的string生成一个唯一的哈希码。 有没有预定义的库,或者我们必须手动生成。 请任何身体如果知道请提供一个链接或代码的东西。

在Perl中的尾随逗号是一个不好的做法?

今天我参加了一个Webex会议,展示了我写的一些Perl代码。 我的老板突然告诉我,而其他人都在看,我不得不从我的散列和数组结构中删除尾随逗号,因为这是一个不好的做法。 我说我不认为这在Perl中是不好的做法,但他坚持让我删除这些逗号,以便在会议中显示我的脚本。 我仍然认为在Perl中这不是一个坏习惯,但我可能是错的。 实际上,我发现他们很方便,也是一个很好的做法,因为他们阻止我添加新的元素,忘记在过程中添加相应的逗号。 但是,我真的很想知道这是一种好的还是坏的做法,并且能够以良好的论据,甚至是我的论据的良好来源向我的老板(如果他错了)展示给我的。 那么留下尾随逗号是不好的做法? 这是一个例子: my $hash_ref = { key1 => 'a', key2 => 'b', key3 => 'c', }; my $array_ref = [ 1, 2, 3, ];

在Ruby中将散列变为string

有没有办法将一个哈希平展到一个string,键和值之间的可选分隔符和键/值对? 例如, print {:a => :b, :c => :d}.flatten('=','&')应该打印a=b&c=d 我写了一些代码来做到这一点,但我想知道是否有一个更好的方法: class Hash def flatten(keyvaldelimiter, entrydelimiter) string = "" self.each do |key, value| key = "#{entrydelimiter}#{key}" if string != "" #nasty hack string += "#{key}#{keyvaldelimiter}#{value}" end return string end end print {:a => :b, :c => :d}.flatten('=','&') #=> 'c=d&a=b' 谢谢

如何从Ruby中的哈希表中获取第一个键和值对

我试图从ruby哈希表中获得第一个键和值键。 我不知道散列的关键值,因为它传递给方法。 我无法find任何地方在线如何find第一个键/值作为一个单独的哈希表。 我认为hash[0]只是试图find一个名称为0的元素,当我运行代码时它只返回nil 。 我知道我可以find关键的名称和值,然后从他们创build一个新的散列,但我想知道是否有一个更简单的方法来做到这一点,所以我马上得到一个散列。 这里是我的代码: def rps_game_winner(game) rock_in_hash = game.invert['R'] paper_in_hash = game.invert['P'] scissors_in_hash = game.invert['S'] if(rock_in_hash) if(paper_in_hash) return paper_in_hash; elsif(scissors_in_hash) return rock_in_hash end elsif(paper_in_hash) if(rock_in_hash) return paper_in_hash elsif(scissors_in_hash) return scissors_in_hash end end key = game.keys[-1] value = game.values[-1] winner = {key => value} return winner end game_one = { "Bob" => 'P', […]

C最小的散列函数?

我不能使用boost:hash,因为我必须坚持使用C,不能使用C ++。 但是,我需要散列大量(10K到100K)的令牌string(长度为5到40个字节),以便在其中search最快。 MD5,SHA1或任何长的散列函数似乎太重了一个简单的任务,我没有做密码学。 另外还有存储和计算成本。 所以我的问题是: 在大多数实际情况下,最简单的散列algorithm可以确保防冲突。 多less位用于散列值? 我正在开发32位系统。 Perl / Python中的哈希algorithm是否也使用32位哈希? 还是我必须跳到64? 关于通用脚本语言中散列表的实现:实现是否检查冲突,还是我可以完全避免该部分?