2013-04-02 6 views
29

Bu yüzden 1 Nisan 2013 xkcd Externalities web comic, bir Skein 1024 1024 hash kırma contest. Bunun, Randall'ın yayınlanmış hash'iyle eşleşmesi için rastgele dizilerden oluşan kaba bir kuvvet çabasından başka bir şey olmaması gerektiğini düşünüyorum. Bu doğru mu?xkcd: Dışsallıklar

Ayrıca Çile karma teori bilgim yok denecek ama bazı girişi olan bir yarıya iyi ben hem SkeinFish (C#) indirmek ve çalıştırmak başardı programcı ve Maarten Bodewes Çile uygulaması (Java) lokal olarak 1024 1024 modunda olmak olduğunu Teller. Bununla birlikte, verdikleri karmalar, xkcd'nin aynı girdi için getirdiği karmadan farklıydı. Bu son derece saf bir soru olabilir ama farklı Skein uygulamaları farklı karmalar veriyor mu? Ve hangi Skein uygulaması xkcd kullanıyor?

Cehaletimi affettiğiniz için teşekkürler!

+0

Aynı sorularım var. Bu yarışma için yazdığı bir senaryoyu buldum. Rastgele girdi üretir ve bunu sağlar. Şimdi anlamaya çalışıyorum koddan geçiyorum. Umarım birisi sorunuzu cevaplar! https://github.com/dghubble/xkcd-hashing/blob/master/main.py –

+4

@JeffersonHudson OMG kaba kuvvet. Bu sabah yanan CPU kokusunun ne olduğunu merak ediyordum. Vikipedi'ye 36.000 $ bağış yapılırken, elektrik şirketleri 200.000 $ gelir artışı elde etti. – gawi

+0

Perl ve Haskell versiyonları da farklı sonuçlar vermektedir. Belki de bu, April'ın aptal şakasının bir parçası. – gawi

cevap

10

Skein algoritmasının birkaç farklı iterasyonu vardır. XKCD ayrıca en yeni olan 1.3 sürümünü kullanıyor. Kaynaklar here bulunabilir ("V1.3" için bakın)

İlginç bir şekilde, bu kaba kuvvet yöntemi Bitcoin tarafından "mayın" bitkotlarına uygulananla aynıdır. Büyük farklılıklar, karma algoritmasıdır (bu durumda SHA-256) ve hedef karması (ki, belirli bir sayıdaki sıfır ile başlayan herhangi bir çentik olmak üzere dinamik olarak belirlenir.) Çarpmayı keşfetmek çok fazla zaman alır, ama bir kez Kaynak bitlerini doğrulamanın ve elde edilen hashın kriterleri karşılamasının önemsiz olduğu bulunmuştur.

+0

SkeinFish sürüm 1.3 ama yine de farklı bir sonuç verir – Tom

+3

@Tom Bazı çatlaklar için SkeinFish'i kullandım ve doğru sihirli değeriyle başlattığınız sürece iyi çalıştı: 'var skein = new Skein1024() skein.Initialize (SkeinInitializationType.Normal); ' – cobbal

7

Burada Stanford ekibinin kullandığı kaynak kod. Bunu bir süredir yaklaşık 8 çekirdekli EC2 sunucusunda çalıştırdık, ancak tüm rekabeti değil.

https://github.com/jhiesey/skeincrack

1

olmayan alfanümerik karakterler (boşluk, vb noktalama,) karma olsaydı, nedeni HTML form kodlama farklı sonuçlar elde edilmiş olabilir. XKCD formundaki "enctype" özniteliği, https://developer.mozilla.org/en-US/docs/HTML/Element/form'a göre tarayıcı destekli bir standart olmayan "application/octet-stream" idi. Tarayıcının, tanımadığı bir karakteri gördüğünde URL kodlama türüne geri döndüğünü varsayardım.

Chrome'da URL olarak kodlanmış olarak gönderilen "=" dizesini ve en son pyskein ile yerel olarak elde ettiğimden farklı bir karı döndürdüğünü gözlemledim. Bu bukle komut satırında (artık çalışmıyor) ile sunulan zaman, ben beklenen karma var:

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

başka bir yanıt Stanford kod aynı şeyi yapar ve onlar görünüşte kısmen başarılı oldular. Kendi okulumdan bile daha iyi bir skor elde etmek için hiç rastgele bir veriye rastlamadım. Bu yüzden, keyfi verileri doğru bir şekilde nasıl geçeceğimi tam olarak test etme şansım olmadı. Ben tam davranış (ör sen hashable ihmal belki eğer = sunucu olduğunu tespit edecek ve sadece bütün POST gövdesini karma) idi bilmiyorum ama kasıtlı Nisan şakası parçası olarak biraz zor olabilir.