2012-04-07 18 views
0

Notwendigkeit, Spielfaircode mit shotgnhillclimbing Methode zu lösen, Will es zuerst einfach tun, indem es Zufallsschlüssel erzeugt und dann die Kerbe durch Englisch-Buchalphabetpaar freq berechnet.Playfair Chiffre zufälliger Schlüssel (C#)

Aber ich weiß nicht, wie man nichtwiederholenden zufälligen Schlüssel, es ist 25! Möglichkeiten. Wenn ich also für immer benutze, ist die Möglichkeit, den richtigen Schlüssel zu finden, sehr klein.

Wie kann ich einen Schlüssel erzeugen und dann den Compiler bitten, ihn nicht mehr zu benutzen ?. Benutze ich Liste: hinzufügen oder entfernen? oder gibt es noch etwas? oder wahrscheinlich eine Schnur [25!]?

+0

25! ist ungefähr 2^83, was ungefähr die gleiche Anzahl von Berechnungen ist, die benötigt werden, um eine SHA-1-Kollision zu finden, so dass Sie die Brute-Force-Route nicht richtig gewählt haben :) Ich würde davon abraten, auch diese Zeichenfolge zu nutzen, die Ihnen ausgehen würde Atome, um das zu tun. –

Antwort

1

Der übliche Ansatz besteht darin, mit einem zufälligen Schlüssel zu beginnen und ihn dann bei jedem Schritt zu ändern. Zu den möglichen Modifikationen gehören: Tauschen Sie zwei Schlüsselbuchstaben aus, tauschen Sie zwei ganze Zeilen aus, tauschen Sie zwei ganze Spalten aus, reflektieren Sie um die mittlere Spalte, reflektieren Sie um die mittlere Zeile oder reflektieren Sie sich um eine der beiden Hauptdiagonalen. Bei jedem Schritt wählen Sie nach dem Zufallsprinzip einen Modifizierungstyp und einen Speicherort für die Änderung aus.

Es ist möglich, dass Ihre zufällige Auswahl keinen Einfluss auf die Schlüsselmatrix hat. Wenn Sie beispielsweise zwei Zeilen vertauschen und für beide Operanden des Swaps die gleichen zwei Zeilen auswählen, bleibt die Schlüsselmatrix unverändert. Das ist gut. Es ist auch möglich, dass zwei aufeinanderfolgende Operationen einander invertieren und somit die Schlüsselmatrix in ihren vorherigen Zustand zurückversetzen. Das ist auch in Ordnung. Da jede Entscheidung zufällig getroffen wird, einige Verbesserungen der Schlüsselmatrix, einige machen es schlimmer, wird Ihr Hill-Climbing-Algorithmus perfekt funktionieren (obwohl es einige Schritte mehr als nötig dauern kann).

Der Punkt ist, dass die Wahrscheinlichkeit eines wiederholenden Zufallsschlüssels ziemlich niedrig ist, und es spielt keine große Rolle, wenn es passiert.

+0

vielen Dank – user1319190