Skript um Texte zu verschlüsseln - Funktioniert das?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FeuerElch
User
Beiträge: 1
Registriert: Freitag 29. Mai 2015, 14:10

Hey Leute!
Ich habe mich mal kurz an dieses kleine Programm gesetzt und mich interessiert ob es überhaupt funktioniert. :D :lol: Ich bin nämlich momentan im Urlaub und kann es selbst nicht ausprobieren (ich schreibe das hier vom Handy). Ich bin noch Anfänger, also wundert euch nicht über vielleicht offensichtliche Fehler ;) Es wprde mich freuen wenn ihr mir Verbesserungsvorschläge gebt
LG
FeuerElch

PS:
Hier ist der Code:

Code: Alles auswählen

option = input ("Möchten Sie codieren (code) oder decodieren (decode) ?")

abc = list ("abcdefghijklmnopqrstuvwxyz")                          #abc als Liste

if option == "code"                                                                 #Option codieren
  text = input ("Geben Sie den zu  codierenden Text ein")   #Text eingeben  
  text = list(text)                                                                    #Text zur Liste machen
  
  code = input("Wie lautet der Schlüssel?")

  codeindex = 0
  index = 0

  for x in range [len (text)]:
     Buchstabe = abc.index (text(index))
     text (index) = buchstabe+code(codeindex)
     
     index = index+1
     codeindex = codeindex+1
     if codeindex == len (code)
         codeindex = 0
  print (.join(text))
  
PPS : Die Formatierung wurde irgendwie nicht übernommen weil mir am Hsndy Tab gefehlt hat ;)
Benutzeravatar
/me
User
Beiträge: 3552
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

FeuerElch hat geschrieben:Es wprde mich freuen wenn ihr mir Verbesserungsvorschläge gebt
Das ist völlig verkorkst. Warte bis du wieder einen Rechner mit Python hast, versuche das Programm laufen zu lassen, entferne offensichtliche Fehler und frag dann noch mal.
Benutzeravatar
/me
User
Beiträge: 3552
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gesetzt den Fall, dass ich den beabsichtigten Code korrekt verstanden habe, sollte das etwa so etwas werden.

Code: Alles auswählen

from itertools import cycle

def character_to_number(char):
    return ord(char) - ord('a')

def number_to_character(number):
    return chr(number % 26 + ord('a'))

def coder(text, code):
    result = []
    for char, code_char in zip(text, cycle(code)):
        char_number = character_to_number(char)
        code_number = character_to_number(code_char)
        result.append(number_to_character(char_number + code_number))
    return ''.join(result)


def main():
    print(coder('abcdefghi', 'abc'))

if __name__ == '__main__':
    main()
Auch dieser Code ist noch nicht wirklich schön und hat noch Limitierungen, aber das reicht mir jetzt erst mal.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Ist das nicht Vigenere?
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

darktrym hat geschrieben:Ist das nicht Vigenere?
Doch.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

So würde ich das implementieren.

Code: Alles auswählen

import itertools

from string import ascii_lowercase as abc

def vigenere(string, key, encode):
    def new_index(a, b):
        if encode:
            n = abc.index(a) + abc.index(b)
        else:
            n = abc.index(a) - abc.index(b)
        return abc[n % 26]
    return ''.join(
        itertools.starmap(new_index, zip(string, itertools.cycle(key)))
    )


def encode(plaintext, key):
    return vigenere(plaintext, key, True)


def decode(ciphertext, key):
    return vigenere(ciphertext, key, False)
ruedi_br
User
Beiträge: 13
Registriert: Montag 11. September 2017, 08:24

Recht und schön, aber vorher sollten Leerzeichen usw. gestrippt werden. :idea:
__deets__
User
Beiträge: 14480
Registriert: Mittwoch 14. Oktober 2015, 14:29

ruedi_br hat geschrieben:Recht und schön, aber vorher sollten Leerzeichen usw. gestrippt werden. :idea:
Du hast ein bisschen die Leichenfledderei angefangen. Der Thread ist >2 Jahre alt.
Antworten