Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Mi 28.11.12 09:19 
Hallo,
nach der Narses' Veröffentlichung der Adents-Spiel-Ankündigung musste ich natürlich versuchen, den Text zu knacken.
Dass es vielleicht die Skytale-Verschlüsselung ist, ergab sich aus dem Adventsspiel 2011, an dem ich ja noch nicht mitgemacht habe. Erst am 24.Dezember habe ich den 1.Jahrestag der aktiven Teilnahme in der EE. Dann darf ich aus der Krabbelgruppe raus. :lol:

Also musste eine Entschlüsselungs-Routine her. Mein Problem war, dass ich stundenlang über die Nichtbuchstaben und Nichtziffern stolperte. Sie wollten einfach nicht in die Verschlüsselung hineinpassen. Außerdem hatte ich einen Denkfehler bei der Zerlegung des Geheimtextes in einzelne Strings.
Im Endergebnis filtere ich nun alle Buchstaben und Ziffern aus, wende auf diese Skytale an und transformiere zurück.

Gibt man "Skytale" in der Suche ein, kommt außer dem Adventsspiel 2011 nichts. Daraus schlussfolgere ich, dass jeder seine eigene, "geheime" Variante nutzt.
Mich würde nun interessieren, ob es ein wesentlich anderes und effizienteres Verfahren, als meins, gibt.
Sollte ich mit dieser Veröffentlichung gegen das ungeschriebene Gesetz, nichts über Skytale zu veröffentlichen, dann einfach löschen.

Im Anhang befindet sich meine Lösung. Diese Lösung ver- und entschlüsselt, auch mit einem anderen Skytaledurchmesser größer 3. Bei meiner Lösung müssen Geheim- und Klartest mit Kopieren/Einfügen in die Textfelder kopiert werden.

Beste Grüße
Mathematiker
Einloggen, um Attachments anzusehen!
_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Mo 31.12.12 09:15, insgesamt 1-mal bearbeitet
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 29.11.12 00:45 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Gibt man "Skytale" in der Suche ein, kommt außer dem Adventsspiel 2011 nichts.

Psst: de.wikipedia.org/wiki/Skytale ;)

Ich hatte die Ankündigung zu spät gelesen, und wurde ausserdem durch den Titel verwirrt. (Römische Zahl, haha mal was neues^^). Aber dass der erste Absatz wohl identisch zu 2011 ist, das war mir klar, hab es trotzdem nicht mehr geschafft es zu knacken :(

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2622
Erhaltene Danke: 1447

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Do 29.11.12 00:52 
Hallo Tilman,
user profile iconTilman hat folgendes geschrieben Zum zitierten Posting springen:
Psst: de.wikipedia.org/wiki/Skytale ;)

natürlich hast Du Recht. Im ganzen Netz findet man zu diesem Thema massenhaft.
Ich habe mich wahrscheinlich nicht richtig ausgedrückt. Mit der "Suche" meinte ich auch die der Entwickler-Ecke. Und da war ich schon überrascht, dass niemand bisher etwas veröffentlicht hatte.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 29.11.12 01:13 
Du hättest den 2011er Thread mal genau lesen sollen ^^ wie im 2012er richtigerweise gesagt wurde, kannst du dazu sogar dein Programm verwenden, musst nur eben auf Kodieren, statt Dekodieren klicken :)
www.entwickler-ecke.....php?p=654641#654641

P.S. zur Effizienz kann ich nix sagen, die war mir egal, aber wenn du an anderen Lösungen interessiert bist, hier meine von 2011
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
const
  zeichen = 'abcdefghijklmnopqrstuvwxyz'+
            'ABCDEFGHIJKLMNOPQRSTUVWXYZ'+
            '0123456789öäüÖÄÜß';

procedure TForm1.Button1Click(Sender: TObject);
  var
    kt1,kt2,kt3,gesamt: String;
    n,p,q: Integer;
    modulo: Integer;
begin
  memo2.Text := '';
  kt1 := '';
  kt2 := '';
  kt3 := '';

  p := 0;
  for n := 1 to length(memo1.text) do
    begin
      if pos(memo1.Text[n],zeichen) > 0 then
        begin
          inc(p);
          modulo := (p mod 3);
          case modulo of
            0: kt3 := kt3 + memo1.Text[n];
            1: kt1 := kt1 + memo1.Text[n];
            2: kt2 := kt2 + memo1.Text[n];
          end// case
        end// if pos
    end// for n

    gesamt := kt1+kt2+kt3;
    q := 0;
    for n := 1 to length(memo1.text) do
      begin
        if pos(memo1.Text[n],zeichen) = 0 then
          begin
            memo2.text := memo2.text + memo1.Text[n];
          end else // pos
          begin
            inc(q);
            memo2.Text := memo2.Text + gesamt[q];
          end;  // else pos
      end;
end;

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)

Für diesen Beitrag haben gedankt: Mathematiker