Hilfe! Ich habe mich gerade bei Stack Exchange angemeldet, aber mein Passwort vergessen! Ich brauche einen Weg, um das herauszufinden, bevor ich mich abmelde.
Zum Glück bin ich ein ausgezeichneter Hacker. Ich konnte nicht nur den Hash meines Passworts finden, sondern auch den Hashing-Algorithmus von Stack Exchange! Es nimmt den ASCII-Wert jeder Ziffer, multipliziert mit der Stelle dieser Ziffer, und summiert dann alle diese Werte zusammen. Beispielsweise:
"135" -> 1*49 + 2*51 + 3*53 = 310
Ich erinnere mich, dass mein Passwort 3-stellig ist und dass jedes Zeichen eine Zahl zwischen 0 und einschließlich 5 ist (so dass es dem regulären Ausdruck entspricht:) ^[0-5]{3}$
, aber das sind immer noch zu viele Möglichkeiten, um es zu erraten. Ich benötige ein Programm, das einen Hash zurück in potenzielle Passwörter konvertieren kann, aber obwohl ich ein erfahrener Hacker bin, kann ich nicht codieren, um mein Leben zu retten! Diese Tests konnte ich allerdings von Hand ausschreiben:
input -> output
288 -> 000 // lowest possible hash
290 -> 200, 010
298 -> 022, 050, 103, 131, 212, 240, 321, 402, 430, 511
318 -> 555 // highest possible hash
Kann einer von Ihnen ein Programm für mich schreiben, das einen Hashwert aufnimmt und alle möglichen Passwörter ausgibt, die ich hätte verwenden können?
Die Eingabe kann immer mindestens ein gültiges Passwort erzeugen. Jedes Ausgabeformat ist zulässig, solange die Zeichenfolgen eindeutig identifiziert werden können. Ich mache mir auch keine Sorgen um führende Nullen. Wenn also ein potenzielles Passwort vorhanden ist 001
, akzeptiere ich auch 01
oder 1
.
Bitte helfen Sie mir, nicht aus Stack Exchange ausgesperrt zu werden!
Wertung
Das ist Code-Golf , also gewinnt die kürzeste Antwort in jeder Sprache!
"135" -> 1*49 + 2*51 + 3*53 = 310
54
kann ich die Nullen vor mir herausfinden.
1
Ascii Wert49
statt48
?