2010-12-30 10 views
0

Angenommen, Ihr Bankangestellte Ihnen ein beliebiges Passwort wie hel34/[email protected]# gibt und man es nicht mehr erinnern kann es auf ein Papier ohne zu schreiben. Dilemma: Sie schreiben niemals Passwörter auf Papier. Also versuchst du eine verschlüsselte Eins-zu-eins-Karte zu erfinden, in der du nur einen Schlüssel zu einem Papier schreibst, nur Zahlen, und den Rest Müll deinem Server überlässt. Natürlich kann das Passwort aus beliebigen Dingen bestehen.String-Verschlüsselung nur mit Zahlen?

mvds hat die richtige Idee, um die Basis zu ändern. Eugene einen Fehler bemerkt, so dass die Eins-zu-Eins-Karte soll wie:

prime1*prime2*...*primeN <----- encoding -------> String 
+2

Ich glaube, Sie uns einige Beispiele geben müssen. Ich habe keine Ahnung, was du hier willst. –

+0

Verdammt, ich dachte, ich habe es aber 1a2 == 11412 macht keinen Sinn für mich machen ... – mvds

+0

oh ja, '‚a‘== 0141' ... Das ist keine gute Idee, da verschiedene Eingabezeichenfolgen könnte zu der gleichen "alphas to oct" -Saite führen. 14a == "14141" == a41. So verlieren Sie Informationen in der Codierung. – mvds

Antwort

2

Ich weiß nicht, ob ich das Problem wirklich verstehen, aber man konnte Ihre Eingabe als Basis-62 Nummer (26 + 26 + 10), die Sie als Ganzzahl einlesen und dann beliebig verarbeiten können. Dann wandeln Sie das Ergebnis wieder in Ihr benutzerdefiniertes base-62-Format um.

So als Beispiel Ihr ist einstelligen Bereich [0-9a-zA-Z] so 0 = 0 dezimal und Z = 61 dezimal, und 10 62 dezimal sein würde.

Dann würde 9aZ 9 sein * 62 * 62 + 10 * 62 + 61 = 35277 dezimal, welche würde Primfaktoren 3 * 11 * 1069

Converting ihnen hat zurück führen: 9aZ = 3 * b * hg

0

Erste Ihr numerischer Code darf nicht kürzer sein als das Passwort: ein kürzeres Passwort verringert die Schutzstärke. Also musst du das Passwort entweder intakt halten (und es nur verschlüsseln) oder es noch länger machen.

Wenn man über Codierung sprechen, können Sie Base10 oder Base16-Codierung verwenden. Bei der Base16-Kodierung haben Sie 2 Zeichen pro Originalzeichen (wenn wir innerhalb des ASCII-Zeichensatzes bleiben), bei der Base10-Kodierung würde die Länge variieren, und um eine korrekte Dekodierung zu gewährleisten, würden Sie 3 Zeichen pro Original-ASCII-Zeichen verwenden.

Verwandte Themen