Hash xkcd:外部性

Hash xkcd:外部性,hash,cryptography,skein,Hash,Cryptography,Skein,因此,2013年4月1日的xkcd网络漫画采用了SKEIN1024散列破解。我假设这只不过是一个蛮力的工作,其中随机字符串被散列以匹配Randall发布的散列?这是正确的吗 此外,我对Skein散列理论的了解几乎是不存在的,但作为一名半途而废的程序员,我能够在1024模式下下载并运行(C#)和Skein实现(Java)以及一些输入字符串。然而,他们给出的散列与xkcd为相同输入返回的散列不同。这可能是一个非常幼稚的问题,但不同的Skein实现是否会给出不同的哈希值?xkcd使用的是什么Skein

因此,2013年4月1日的xkcd网络漫画采用了SKEIN1024散列破解。我假设这只不过是一个蛮力的工作,其中随机字符串被散列以匹配Randall发布的散列?这是正确的吗

此外,我对Skein散列理论的了解几乎是不存在的,但作为一名半途而废的程序员,我能够在1024模式下下载并运行(C#)和Skein实现(Java)以及一些输入字符串。然而,他们给出的散列与xkcd为相同输入返回的散列不同。这可能是一个非常幼稚的问题,但不同的Skein实现是否会给出不同的哈希值?xkcd使用的是什么Skein实现


谢谢你原谅我的无知

skein算法有几个不同的迭代。XKCD使用的是1.3版,也是最新版本。可以找到来源(查找“V1.3”)


有趣的是,这种蛮力方法与比特币用来“挖掘”比特币的方法相同。最大的区别是散列算法(在这种情况下是SHA-256)和目标散列(动态确定为以一定数量的零开始的任何散列)。发现散列需要大量的工作,但是一旦找到了,验证源位和结果哈希是否符合标准就变得微不足道了。

以下是斯坦福团队使用的源代码。我们在大约一百台8核EC2服务器上运行了一段时间,但不是整个竞争对手


如果对非字母数字字符(空格、标点符号等)进行哈希运算,可能会由于HTML表单编码而得到不同的结果。XKCD承载的表单上的“enctype”属性是“application/octet stream”,根据浏览器支持的标准,该属性不是。我假设浏览器在看到它无法识别的URL编码类型时会返回URL编码类型

我观察到字符串“=”是用Chrome编码的URL提交的,返回的哈希值与我在本地用最新的pyskein得到的不同。但是当我用这个curl命令行提交它时(不再工作),我得到了预期的散列:

curl -X POST --data-binary "hashable==" "http://almamater.xkcd.com/?edu=school.edu"

另一个答案中的斯坦福代码也做了同样的事情,他们显然取得了一些成功。我从来没有得到任何随机数据在本地散列到比我自己的学校更好的分数,所以我从来没有机会彻底测试如何正确地传递任意数据。我不知道确切的行为是什么(例如,如果你忽略hashable=服务器可能会检测到这一点,然后对整个帖子正文进行散列),但作为愚人节的一部分,这可能是故意的有点棘手。

我也有同样的问题。我找到了有人为这次比赛写的剧本。它生成随机输入并对其进行散列。我现在正在浏览代码,试图理解它。希望有人能回答你的问题@杰弗逊·哈德逊,天哪,蛮力。我想知道今天早上CPU烧焦的味道是什么。虽然向维基百科捐赠了36000美元,但电力公司的收入增加了200000美元。perl和Haskell版本也产生了不同的结果。也许这是愚人节玩笑的一部分。@JeffersonHudson为我工作。发布猜测绝对不是一种方式,除非你指望运气好。来自Maarten Bodewes的猜测已经过时了,因为他太忙于回答有关Stackoverflow的问题。很抱歉:)SkeinFish是1.3版,但仍然给出了不同的结果。@Tom我在一些破解中使用了SkeinFish,只要使用正确的魔法值初始化它,它就可以正常工作:
var skein=new Skein1024();skein.Initialize(SkeinInitializationType.Normal)