【问题标题】:xkcd: Externalitiesxkcd:外部性
【发布时间】:2013-04-06 09:54:42
【问题描述】:

因此,2013 年 4 月 1 日的 xkcd Externalities 网络漫画具有 Skein 1024 1024 散列破坏 contest。我假设这只不过是一种蛮力努力,其中随机字符串被散列以匹配 Randall 发布的散列?这是正确的吗?

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

感谢您原谅我的无知!

【问题讨论】:

  • 我也有同样的问题。我找到了有人为这次比赛写的这个剧本。它生成随机输入并对其进行哈希处理。我现在正在浏览代码,试图理解它。希望有人回答你的问题! github.com/dghubble/xkcd-hashing/blob/master/main.py
  • @JeffersonH​​udson OMG 蛮力。我想知道今天早上这种燃烧的 CPU 气味是什么。虽然向维基百科捐赠了 36,000 美元,但电力公司的收入增加了 200,000 美元。
  • perl 和 Haskell 版本也产生不同的结果。也许这就是四月愚人笑话的一部分。
  • @JeffersonH​​udson pythonhosted.org/pyskein 为我工作。发布猜测绝对不是这样做的方法,除非你指望得到非常幸运。
  • 来自 Maarten Bodewes 的那篇文章已经过时了,因为他忙于回答 Stackoverflow 上的问题。对此感到抱歉:)

标签: hash cryptography skein


【解决方案1】:

绞纱算法有几种不同的迭代。 XKCD 使用的是 1.3 版本,这也是最新的。来源可以找到here(寻找“V1.3”)

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

【讨论】:

  • SkeinFish 是 1.3 版,但仍然给出不同的结果。
  • @Tom 我用 SkeinFish 进行了一些破解,只要你用正确的魔法值初始化它就可以正常工作:var skein = new Skein1024(); skein.Initialize(SkeinInitializationType.Normal);
【解决方案2】:

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

https://github.com/jhiesey/skeincrack

【讨论】:

    【解决方案3】:

    如果您对非字母数字字符(空格、标点符号等)进行散列处理,由于 HTML 表单编码,您可能会得到不同的结果。 XKCD 托管的表单上的“enctype”属性是“application/octet-stream”,根据https://developer.mozilla.org/en-US/docs/HTML/Element/form,它不是浏览器支持的标准。我假设浏览器在看到它无法识别的 URL 编码类型时会退回到 URL 编码类型。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 2012-09-23
      • 2014-06-07
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多