Verschlüsselung durch "Gartenzaunverschlüsselung"

Du hast eine Idee für ein Projekt?
wrrr91
User
Beiträge: 9
Registriert: Donnerstag 12. März 2009, 18:23

Hallo liebe community !
Und zwar suche ich ein Programm mit dem ich die sogenannte "Gartenzaunverschlüsselung" realisieren kann... leider bin ich total neu in diesem Gebiet und Bitte daher um eure Mithilfe... Leider bräuchte ich diese Programm bis heute abend..... :lol:


MfG WrrR91
[/code]
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Hallo und Willkommen im Forum.

Ich würd hier http://www.python-forum.de/topic-1689.html mal reinschauen.

Gruß
Damaskus
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hier mal ein kleiner Ansatz zum Verschlüsseln, entschlüsseln müsstest damit selber hinbekommen.

Code: Alles auswählen

#!/usr/bin/env python

def crypt(message):
	lines = 2
	words = []
	for i in range(lines):
		s = ""
		words.append(s)
	current_line = 0
	for char in message:
		words[current_line] += char
		current_line += 1
		if current_line >= lines:
			current_line = 0
	return words

if __name__ == "__main__":
	print crypt("Das ist ein langer String.")
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Mir war langweilig^^
http://paste.pocoo.org/show/107639/

Jetzt will ich aber ein Dankeschön hören :roll:
BlackJack

Da kann sich der OP echt bedanken, dass sieht nämlich so gruselig umständlich und unpythonisch aus, dass der Lehrer wahrscheinlich glaubt, dass es vom OP ist. Dann noch die falschen Funktionsnamen… :twisted:
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

BlackJack hat geschrieben:Da kann sich der OP echt bedanken, dass sieht nämlich so gruselig umständlich und unpythonisch aus,
Warum??

Und nicht jeder ist in Englisch ein Ass :(
wrrr91
User
Beiträge: 9
Registriert: Donnerstag 12. März 2009, 18:23

ice2k3 hat geschrieben:Mir war langweilig^^
http://paste.pocoo.org/show/107639/

Jetzt will ich aber ein Dankeschön hören :roll:

DANKE DANKE DANKE DANKE DANKE DANKE =)=)=)=)=)=)=)=)=) <3 <3


ich danke dir viiieeelllmmmaaalllls :D:D
wrrr91
User
Beiträge: 9
Registriert: Donnerstag 12. März 2009, 18:23

ice2k3 hat geschrieben:Mir war langweilig^^
http://paste.pocoo.org/show/107639/

Jetzt will ich aber ein Dankeschön hören :roll:
aber wie funktioniert das? ^^

edit: bei mersten evrstehe ich wie es geht aber wie gehts das2. wie kann ich es entschlüsseln lassen? :P
BlackJack

@ice2k3: Warum das so aussieht? Na weil Du's so geschrieben hast. ;-)

Du verwendest ``for``-Schleifen über `range()` um Indexe zu generieren, Zähler die "manuell" hochgezählt werden, umständliches ``if``\s statt Modulo-Arithmetik, und geschachteltes Indexing auf `words`.

Der Name `encrypt` ist genau falsch, die Funktion müsste `decrypt` heissen. Das die einfach nur die Nachricht, und keinen Schlüssel als Argument benötigt, macht das Ganze komplett sinnlos. Wenn man eine verschlüsselte Nachricht, völlig ohne "geheimes" Wissen entschlüsseln kann, braucht man ja gar nicht erst verschlüsseln.

Mein Versuch:

Code: Alles auswählen

from functools import partial


def crypt(message, key, encrypt=True):
    if key < 2:
        raise ValueError('key must be >= 2')
    message += ' ' * (-len(message) % key)
    step = key if encrypt else len(message) // key
    return ''.join(message[i::step] for i in xrange(step)).rstrip()


encrypt = crypt
decrypt = partial(crypt, encrypt=False)


def main():
    message = 'Das ist eine lange Zeichenkette.'
    for i in xrange(2, 10):
        crypted = encrypt(message, i)
        print '%d) %-38r %-38r' % (i, crypted, decrypt(crypted, i))
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Und welche der beiden Lösung ist jetzt wohl besser um einen Algorithmus aufzuzeigen. Und genau darum geht es ja wohl hier...

Und nach dem Verschlüsseln müssen die einzelnen Zeilen getrennt vorliegen, ist bei dir auch nicht der Fall!

Hab außerdem noch Fehler im Algorithmus, die müssten bei dir auch mit drin sein.
lunar

ice2k3 hat geschrieben:Und welche der beiden Lösung ist jetzt wohl besser um einen Algorithmus aufzuzeigen.
Ganz ehrlich? BlackJacks. Der Algorithmus hat sich ja nicht geändert, aber BlackJack hat in auf eine Art und Weise implementiert, die den Möglichkeiten der Sprache und der Mathematik gerecht wird. Dein Algorithmus verwendet ja noch nicht mal so grundlegende Dinge wie modulare Arithmetik (aka Restwertdivision).
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hier noch eine viel "grausamere", aber funktionierende Variante.
Das ist echt hässlich, aber diesmal ist es der richtige Algorithmus.
(Wenn es z.B. 3 Zeilen gibt, muss zuerst in die 1. Zeile, dann 2. dann 3. dann 2. dann 1. dann 2., ... Zeile geschrieben werden)

Bin mal gespannt, wie und ob du das in richtigem Python löst^^

http://paste.pocoo.org/show/107678/
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

ice2k3 hat geschrieben: Das ist echt hässlich, aber diesmal ist es der richtige Algorithmus.
Kannst Du uns dazu mal eine Quelle geben bitte? (Zumal ich noch nicht erkennen kann, inwiefern es einen sicherheitsrelevanten Unterschied macht, ob ich von "unten" wieder nach oben gehe oder wieder von der ersten zur letzten Zeile! Im Zweifel ist das exakt ein Versuch mehr beim Entschlüsslen ;-) Oder habe ich da was übersehen?)
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Google: "Gartenzaunverschlüsselung"
Erster Treffer.

Kann ja nicht so schwer sein...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

ice2k3 hat geschrieben:Google: "Gartenzaunverschlüsselung"
Erster Treffer.

Kann ja nicht so schwer sein...
Das ist ja wohl nicht Dein Ernst?!? google benutzen kann ich schon - ich merke aber an Deinem Kommentar, dass Du Dir gar keine Mühe gemacht hast, eine seriöse Quelle zu suchen!

Meine Frage bezog sich auf eine wissenschaftliche Beschreibung dieser Methode - du lieferst mir einen Aufgabenzettel (Und das noch als ersten Treffer bei google)! :roll:
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Was soll denn jetzt der Aufstand...
Du kannst auch Google Treffer 2- xxx nehmen, da wird es auch nicht anders stehen.
BlackJack

Doch wird es! Die meisten Treffer arbeiten nur mit zwei Zeilen klären die Frage also nicht, und bei mehr Zeilen gibt's sowohl das "Sägezahnmuster", als auch das "Dreiecksmuster". Solange also keine bessere Quelle genannt wird, gehe ich mal davon aus, dass Gartenzaunverschlüsselung mit mehr als zwei Zeilen nicht eindeutig beschreibt wie die Buchstaben auf die Zeilen verteilt werden sollen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich bevorzuge ja diese Variante.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Also "Dreiecksmuster".

@ice2k3: Wobei auch die Webseite die Leonidas verlinkt hat, wie auch alle anderen die ich gefunden habe, davon ausgeht, das der verschlüsselte Text aus *einer* *zusammenhängenden* Zeichenkette besteht, und nicht aus den einzelnen "Zeilen" getrennt. Du machst es Dir mit dem Entschlüsseln also eindeutig zu einfach, weil Du mehr Informationen verwendest, als Du an dem Punkt eigentlich haben dürftest.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Code: Alles auswählen

def encrypt(m):
    m = m.upper().replace(" ", "")
    return m[::2] + " " + m[1::2]
    
print encrypt("Hallo Welt")
Stefan
Antworten