30

2013 年 4 月 1 日の xkcd Externalitiesウェブ コミックでは、Skein 1024 1024 ハッシュ ブレークコンテストが特集されています。これは、Randall が投稿したハッシュと一致させるためにランダムな文字列をハッシュ化する、総当たり攻撃に過ぎないと思いますか? これは正しいです?

また、Skein ハッシュ理論に関する私の知識は事実上存在しませんが、中途半端なプログラマーとして、SkeinFish (C#) とMaarten Bodewes Skein 実装 (Java) の両方をダウンロードして、1024 1024 モードでいくつかの入力文字列を使用してローカルに実行することができました。ただし、彼らが提供したハッシュは、同じ入力に対して xkcd が返したハッシュとは異なりました。これは非常に素朴な質問かもしれませんが、Skein の実装が異なればハッシュも異なりますか? そして、xkcd はどの Skein 実装を使用していますか?

私の無知を許してくれてありがとう!

4

3 に答える 3

11

かせアルゴリズムにはいくつかの異なる反復があります。XKCD は、これも最新のバージョン 1.3 を使用しています。ソースはここにあります(「V1.3」を探してください)。

興味深いことに、この力ずくの方法は、ビットコインを「マイニング」するためにビットコインで採用されている方法と同じです。大きな違いは、ハッシュ アルゴリズム (この場合は SHA-256) とターゲット ハッシュ (特定の数のゼロで始まる任意のハッシュであると動的に決定される) です。ハッシュを発見するには多くの作業が必要ですが、一度ソースビットを検証するのは簡単であり、結果のハッシュが基準を満たしていることがわかっています。

于 2013-04-02T21:34:25.363 に答える
1

If you were hashing non-alphanumeric characters (spaces, punctuation, etc.), you may have been getting different results due to HTML form encoding. The "enctype" attribute on the form XKCD was hosting was "application/octet-stream", which according to https://developer.mozilla.org/en-US/docs/HTML/Element/form is not a browser-supported standard. I assume the browser falls back on the URL-encoding type when it sees one it doesn't recognize.

I observed the string "=" being submitted URL-encoded in Chrome, and returning a different hash than what I got locally with the latest pyskein. But when I submitted it with this curl command line (no longer works), I got the expected hash:

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

The Stanford code in another answer does the same thing, and they apparently had some success. I never got any random data to locally hash to a better score than even my own school, so I never got a chance to test thoroughly how to pass arbitrary data in properly. I don't know what the exact behavior was (e.g., perhaps if you omitted hashable= the server would detect that and just hash the whole POST body), but it may have intentionally been a little tricky as part of April Fool's.

于 2013-04-06T01:49:33.233 に答える