2017-12-22 21 views
1

Ich benutze einen Bruteforce-Algorithmus, um Hashes zu generieren, bis ich einen mit einem definierten Präfix gefunden habe.Schätzung der Bruteforce-Progression

Zum Beispiel Hash-Zufallszahlen, bis ich einen Hash mit abc12 (die Hashes sind hexadezimal) finden.

Ich verstehe, dass für jeden Hash die Wahrscheinlichkeit, erfolgreich zu sein, ist p = (1/(16^len(prefix)).

Was ich zu tun habe, ist eine Approximation der Progression, da ich die zu verwendenden Formeln nicht kenne.

Zum Beispiel würde Ich mag sagen, dass meine Progression 37% ist, oder dass ich 50% nach 15 Minuten erreichen würde, oder jede andere Art von nützlichen Informationen

Danke für Ihre Hilfe

+2

Haben Sie eine Methode zu gewährleisten, dass Ihre „Zufallszahlen“ keine Wiederholung? Wenn Ihre Zufallszahlen unabhängig sind, ist Ihre Wahrscheinlichkeit bei jedem Versuch genau gleich, und eine Fortschrittsleiste wäre daher irreführend. Jeder Versuch würde dich deinem Ziel nicht näher bringen. –

+0

In jeder Iteration eine Zahl erhöhen. 1/p = ungefähre maximale Anzahl der Raten. Sie nehmen die Anzahl der Iterationen und teilen sie durch die maximale Anzahl der Raten. Sie multiplizieren mit 100 und Sie haben Ihren ungefähren Fortschrittsprozentsatz. – rm4

+1

@ rm4 Sie könnten leicht eine Progression größer als 100% erreichen, und das wäre irreführend. –

Antwort

0

ich glaube, ich

einen anwser gefunden Wenn meine Wahrscheinlichkeit, eine Lösung zu finden, 256 (Präfix der Länge 2), dann meine Progression ist:

1 - (255/256)^(number of attempts)

Ich kann schätzen, wenn ich 50% durch die Lösung N erreichen werden: 1 - (255/256)^N = 1/2

0

Leider gibt es keine sinnvolle Maßnahme des „Fortschritts“ für dieses Problem. Lassen Sie uns eine einfache Analogie machen:

Drehen Sie eine Münze wiederholt, bis Sie Köpfe bekommen.

Was sind deine Fortschritte nach 1, 2 oder 3 Tail Flips?

Durch die Begründung in Ihrer Antwort ist es 50%, 75% und 87,5%. Aber das macht keinen Sinn, denn nach jedem Schwanz we are exactly as far away from getting heads as we were when we started. Es dauert immer 2 Schläge im Durchschnitt, um Köpfe zu bekommen.

Was Sie in Betracht ziehen könnten, ist die Berechnung der erwarteten Anzahl von Hashwerten, die benötigt werden, um einen Hash mit dem gewünschten Präfix zu finden. Dies muss nur einmal berechnet werden, da es sich nicht ändert, je nachdem, wie viele Sie in der Vergangenheit versucht haben. Mit anderen Worten, wenn Sie erwarten, dass Sie 1M Hashes benötigen, ändert sich das nicht, ob Sie bisher 0 oder 10M bisher versucht haben. Sie brauchen immer noch 1M mehr im Durchschnitt.

Die erwartete Anzahl von Hashes ist nur die Umkehrung der Wahrscheinlichkeit des Erfolgs:

E_num_hashes = 16^len_prefix 
Verwandte Themen